這是我的方法:GetListItemsPainted<T>(List<T> list)
,我不知道是什麼類型的該列表,我可以得到一個對象的泛型類型嗎?
我怎樣才能創建一個能夠有通過列表類型的新名單?
是這樣的:
List<list.GetType()> newList = new List<list.GetType()>();
如何我投我的列表,以真正的類型,所以我將有他的所有屬性等?
感謝
這是我的方法:GetListItemsPainted<T>(List<T> list)
,我不知道是什麼類型的該列表,我可以得到一個對象的泛型類型嗎?
我怎樣才能創建一個能夠有通過列表類型的新名單?
是這樣的:
List<list.GetType()> newList = new List<list.GetType()>();
如何我投我的列表,以真正的類型,所以我將有他的所有屬性等?
感謝
您不必創建一個新的列表,你已經有一個。
如果你需要一個特定的類型,然後用where
constraint
限制你的泛型類型參數如果你打算到各種各樣的任意類型的,這在我看來是一個不好的設計決定的反應,那麼你將需要使用條件與.Cast<T>()
類似:
Type myListType = list.GetType().GetGenericArguments()[0];
// or Type myListType = typeof(T); as stated by Kobi
if(myListType == typeof(SomeArbitraryType))
{
var typedList = list.Cast<SomeArbitraryType>();
// do something interesting with your new typed list.
}
但同樣,我會考慮使用一個約束。
您可以使用T
列表:
List<T> newList = new List<T>();
如果你必須得到的類型,你可以使用typeof
。這類似於你問什麼,但有其他用途,你不需要它,使仿製藥的工作:
Type myType = typeof(T);
謝謝,這是非常halpfull – dubi 2010-05-16 12:49:26
@dubi - 如果它提供了所需的指導,你應該點擊複選標記。 – 2010-05-17 06:27:29