讓我們考慮一個接口的方法:調用與在編譯時已知不同類型的循環泛型方法
public Interface IA {
T[] Get<T>() where T : IB;
}
在另一個地方,我想調用此方法N次n種這是已知編譯時間。以下代碼示意我的意圖。現在
foreach(Type t in new Type[] { typeof(X), typeof(Y), typeof(Z) })
{
InterfaceXYZImplement[] arr = c.Resolve<IA>().Get<t>();
//...more here
}
,該的foreach循環顯然使類型成爲一個運行時間值,所以我將不得不使用MakeGenericMethod。
有沒有辦法以這樣的方式編寫代碼,以便我可以爲X,Y和Z執行代碼,但只調用一次寫入的方法?
在方法中包裝代碼只會將問題向上移動(這是一個部分解決方案,但不是最終解決方案,嘿)。
在此先感謝
Tymek
多大'N'? – LukeH
爲什麼不直接給他們打電話?編譯時已知的類型每次都在變化? – leppie
我並不清楚「調用只寫一次的方法」是什麼意思,並且[@mrtofigh的解決方案](http://stackoverflow.com/a/10429266)有什麼問題 - 你能否詳細說明一下?使用'MakeGenericMethod'有什麼問題? – AakashM