gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:35:03 26 4
gpt4 key购买 nike

让我们创建一些接口(interface)

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;
}

}

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

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

最佳答案

这是一个副本

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

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

关于c# - 实现定义基类属性的接口(interface)时,为什么实现接口(interface)的类不能返回派生类类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com