在泛型类中隐藏非泛型基类属性或方法的标准模式是什么?在通用类中隐藏非泛型基类属性
我有2个解决方案实际上做的是相同但不同的方法。溶液中的一种使用多个存储器,因为基类和派生类引用相同的对象和溶液2比较慢,因为铸件(或也许我错了吗?)
基类:
public class MyDataBase {}
public class MyDataDerived : MyDataBase {}
public class BaseFoo
{
private readonly MyDataBase _data;
public MyDataBase Data { get { return _data; } }
public BaseFoo(MyDataBase data) {
_data = data;
}
}
解决方案1:
public class GenericFooWithHiding<T> : BaseFoo where T : MyDataBase
{
private readonly T _data;
public GenericFooWithHiding(T data) : base(data) { _data = data; }
public new T Data { get { return _data; } }
}
解决方案2:
public class GenericFooWithCasting<T> : BaseFoo where T : MyDataBase
{
public GenericFooWithCasting(T data) : base(data) {}
public new T Data { get { return base.Data as T; } }
}
你能解释的目的,为什么你有仿制药吗?你正在使它成为T只能是一种类型的地方,你可以使用MyDataBase类型并且仍然向构造函数发送一个MyDataBaseDerived。 – 2013-03-05 01:28:10
@InfinitePossiblities:'T'可以是从'MyDataBase'派生的任何类型。问题是如何将属性的返回类型更改为'T'。 – pescolino 2013-03-05 12:55:02
@pescolino现在有道理,谢谢! – 2013-03-05 19:28:00