我有以下問題:列表不同泛型類型,動態鑄造
- 我需要存儲與不同類型的參數,像javish
Sth<A,?>
通用對象, - 「?」類型通常是原語,所以不是真正可擴展的/可更換
- 我需要我的列表中的每個元素上執行一些方法對不同類型的這些方法
- 不同的方法,或者至少不同的重載
雖然我不知道如何存儲這種類型,但爲簡單起見,我們假設List<object>
。
我可以將問題的類型存儲在某個地方(List<KeyValuePair<Type,object>>
),用typeof()
獲得它,但是,如何才能將對象恢復爲所需的類型? 喜歡的東西
foreach(var entry in myList)
{
var obj = (Sth<A, entry.Key>) entry.Value;
myMethod(obj); //This can have overloads for object, Sth<A,int>, Sth<A,string>,
// etc. Generally, I need a correct type of obj here.
}
當然myMethod<T>
是一個通用庫方法有太多的過載到的if-else它obj is Sth<A, uint>
...
我想我可以創建基於entry.Key
一個新的對象,然後填寫
這樣的組合類型甚至可能嗎?
我相信,答案在於正確創建myList
,但我不知道該怎麼做。
任何幫助,將不勝感激!
聖誕快樂!:)
'myMethod'做什麼?在某些時候,你是否不得不將這個對象轉換成有意義的東西來使用它? – 2011-12-23 14:21:43
嗯,這個'myMethod'事實上並不是我的;]問題是我不知道源代碼,不能說哪種類型是重要的。 – 2012-01-11 22:26:14