在泛型類中隱藏非泛型基類屬性或方法的標準模式是什麼?在通用類中隱藏非泛型基類屬性
我有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