【发布时间】:2021-03-04 11:51:25
【问题描述】:
我有一个与this user 类似的问题,但是我发现使用泛型会在实际使用中引入不必要的冗长。
(在我的例子中,“MySpecificClass”使用一种特定的 ICustom Values 类型,因此 T 始终只是一种类型。)
我当前的“解决方案”是在基类中定义一个支持成员,然后在派生类中定义转换为更具体类型的“新”属性。
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;}
}
这感觉很聪明,到目前为止还没有引起任何问题。在编写派生这些类的更高级别代码方面,它还产生了我正在寻找的确切交互。
它看起来也像一个巨大的定时炸弹,虽然我不能指望它。我错过了什么?
【问题讨论】:
-
方法隐藏的副作用解释见this answer
-
虽然当前接受的答案是在较新的 c# 版本中处理这种情况的正确方法,但这个链接实际上为我提供了我正在寻找的信息。看起来我很安全(在我的用例中)。
标签: c# polymorphism