創(chuàng)建泛型類型的實例?如果BaseFruit有一個接受一個的構造函數(shù),int weight我可以用這樣的泛型方法實例化一塊水果嗎?public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);}注釋后面添加了一個示例。如果我給出BaseFruit一個無參數(shù)構造函數(shù)然后通過成員變量填充所有內(nèi)容,我似乎只能這樣做。在我的真實代碼中(不是關于水果),這是不切實際的。-Update-所以它似乎無法以任何方式通過約束來解決。從答案中有三種候選解決方案:工廠模式反射活化劑我傾向于認為反射是最不干凈的,但我不能在其他兩個之間做出決定。
3 回答

慕村9548890
TA貢獻1884條經(jīng)驗 獲得超4個贊
作為user1471935建議的補充:
要使用帶有一個或多個參數(shù)的構造函數(shù)來實例化泛型類,現(xiàn)在可以使用Activator類。
T instance = Activator.CreateInstance(typeof(T), new object[] {...})
對象列表是您要提供的參數(shù)。根據(jù)微軟的說法:
CreateInstance [...]使用與指定參數(shù)最匹配的構造函數(shù)創(chuàng)建指定類型的實例。
還有一個通用版本的CreateInstance(CreateInstance<T>()
),但是它也不允許你提供構造函數(shù)參數(shù)。
- 3 回答
- 0 關注
- 523 瀏覽
添加回答
舉報
0/150
提交
取消