gpt4 book ai didi

c# - 接口(interface)不接受继承的成员(OO问题)

转载 作者:行者123 更新时间:2023-12-03 23:48:24 26 4
gpt4 key购买 nike

我觉得自己像个傻瓜,但这里是:

public interface IHasErrorController{
ErrorController ErrorController { get; set; }
}

public class DSErrorController: ErrorController{yadi yadi ya}

public class DSWebsiteController : Controller, IHasErrorController{
public DSErrorController ErrorController { get; set; }
}

这给了我一个错误,提示 DSWebsiteController.ErrorController 无法实现 IHasErrorController,尽管 DSErrorController 是从 ErrorController 继承的。

此外,欢迎提出更好的命名建议,以便类型 ErrorController 和字段 Errorcontroller 看起来不一样(命名很难)。

最佳答案

C#(目前)几乎没有[co|contra]方差支持;因此,接口(interface)实现必须完全匹配,包括返回类型。为了将您的具体类型保留在类 API 上,我将显式实现该接口(interface) - 即添加:

ErrorController IHasErrorControlloer.ErrorController {
get {return this.ErrorController;}
set {this.ErrorController = (DSErrorController)value;}
}

或者,只需将属性的类型更改为 ErrorController - 这可能(也可能不会)满足您的需要。

关于c# - 接口(interface)不接受继承的成员(OO问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/201178/

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