并行继承
本文关键字:继承 并行 | 更新日期: 2023-09-27 18:20:26
我有对象BaseObject和DerivedObject。然后我想给BaseObject一个BaseContainer,并给DerivedObject一个DerivedContainer。
(派生对象:基本对象,派生容器:基本容器)
例如,使用new
关键字:
基本对象:
公共BaseContainer容器{get;set;}
衍生对象:
public new DerivedContainer Container
{
get { return (DerivedContainer)base.Container; }
set { base.Container = value;
//Some extra things that MUST be called
}
}
virtual
和override
不起作用,因为您无法更改返回类型(get;
失败)。如果我使用((BaseObject)myDerivedObject).Container = something
,new
就不起作用,因为它没有调用DerivedObject.Container__set
中的额外代码(注释部分)。
我知道我可以只创建属性get
-,使用new
,并添加一个虚拟setter方法(返回类型无论如何都是void,所以我可以覆盖它),但我想知道是否有任何方法可以绕过它。
您可以使用泛型。
class Base<TContainer> where TContainer : Container
{
TContainer Container { get; set; }
}
class Derived : Base<DerivedContainer> { }