我在我的C#項目中有三個類:GenericClass<T>
,其中T可以是BaseClass
或子類。是否可以將一個GenericClass <SubClass>添加到C#中的List <GenericClass <Base>>?
我需要創建一個GenericClass<BaseClass>
的列表,它接受GenericClass<BaseClass>
或通用中的BaseClass
的後代。我試圖通過創建List<GenericClass<BaseClass>>
像下面這樣做:
List<GenericClass<BaseClass>> list = new List<GenericClass<BaseClass>>();
GenericClass<SubClass> test = new GenericClass<SubClass>();
list.Add(test);
C#拒絕執行此操作,告訴我,一個GenericClass<SubClass>
不是GenericClass<BaseClass>
。爲什麼是這樣?這似乎違反直覺,因爲是BaseClass
的一種形式。
GenericClass<T>
被設計成可註冊的類型,遊戲腳本可以使用它來封裝從基礎對象下降的自定義遊戲對象類型。有沒有辦法實現這一點,而不使用反射? BaseClass
包含所有對象通用的代碼方法,所以它不能被製作成接口。
這些類是如何定義的? –
我忘記提及的唯一的事情是'GenericClass'被定義爲: 'public class GenericClass < T > where T:BaseClass,new()' –
[這是什麼目的?](http:// xyproblem。 info /) –