c# – 当实现定义基类属性的接口时,为什么类实现接口不能返回派生类类型对象?

让我们创建一些接口

public interface ITimeEventHandler
    {
        string Open();
    }

    public interface IJobTimeEventHandler : ITimeEventHandler
    {
        string DeleteJob();
    }

    public interface IActivityTimeEventHandler : ITimeEventHandler
    {
        string DeleteActivity();
    }



    public interface ITimeEvent
    {
        ITimeEventHandler Handler { get; }
    }

    public interface IJobTimeEvent : ITimeEvent
    {
        int JobID { get;  }
    }

创建一个类

public class JobTimeEvent : IJobTimeEvent
    {
        public int JobID
        {
            get; internal set;

        }

        public IJobTimeEventHandler Handler
        {
            get; internal set;
        }

    }

我的问题是..当实现一个定义基类属性的接口时,为什么类实现接口不能返回派生类类型对象?

对于类JobTimeEvent中的ex,IJobtimeEvent需要一个ITimeEventHandler类型的属性,但为什么不允许从IimeEventHandler派生的IJobTimeEventHandler类型

最佳答案
这是重复的

Why C# doesn’t allow inheritance of return type when implementing an Interface

您想要的功能称为“返回类型协方差”,它是C#中经常请求的功能. CLR不支持它,我们没有计划在C#中实现它,对不起!

转载注明原文:c# – 当实现定义基类属性的接口时,为什么类实现接口不能返回派生类类型对象? - 代码日志