通过新的关键字完整性检查更具体的属性类型



我也遇到过类似的问题,但是我发现在实际使用中使用泛型会引入不必要的冗长。

(在我的例子中,"MySpecificClass"使用一个特定的iccustom Values类型,所以T总是只有一个类型。)

我当前的"解决方案"是在基类中定义一个支持成员,然后定义"new"在派生类中转换为更具体类型的属性。

public class BaseMember { }
public class BaseOwner
{
protected BaseMember _member;
public BaseMember member {get => _member; private set => _member = value;}
}
public class DerivedMember: BaseMember { }
public class DerivedOwner : BaseOwner
{
public new DerivedMember member {get => (DerivedMember) _member; private set => _member = value;}
}

这感觉很聪明,到目前为止还没有引起任何问题。它还产生了我在编写派生这些类的高级代码方面所寻找的确切交互。

它看起来也像一个巨大的定时炸弹虽然我说不清楚。我错过了什么?

c# 9.0允许更改返回类型,使用更具体的类。所以不需要new。参见协变返回。

要使用它,你需要在基类中声明为virtual,然后在子类中声明为override

相关内容

  • 没有找到相关文章

最新更新