C#4.0 .NET 4.5 Silverlight 5 看起來很奇怪,我不能找到解決方案,所以需要一些幫助。C#泛型類中的協變性
我有基類Base和派生類Child:Base。我也有助手類具有泛型類型來做具體的工作一個EF實體助手,其中T:EntityObject。
子對特定的實體MyEntity:EntityObject做特定的工作。
所以,我想:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
我希望有更多的派生類必須瞭解更具體的泛型參數,我認爲這就是協方差......但是,這並不工作...
設計這樣的課程的「正確」方式是什麼?
編輯:對不起,我沒能100%清楚爲什麼不能我實現我需要什麼。
a。通用基地的解決方案不起作用,因爲基地的用戶不知道T型。試想一下:
public class User
{
private Base<T> base; // this will not compile.
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) base = new Child();
...
灣帶接口的解決方案不起作用,因爲幫助器在任何地方都使用T(它的目的是否正確?)。想象一下,它有方法
public IEnumerable<T> Process(IEnumerable<T> items) { return items; }
我如何把它的界面,不知道大約T t
你看到了什麼錯誤? 「不起作用」是什麼意思? – 2013-05-01 11:50:28
'助手「是什麼樣的? 'MyEntity'和'EntityObject'之間的關係是什麼? – 2013-05-01 11:52:28
幫手類是這裏最重要的部分 – NSGaga 2013-05-01 11:54:53