17
我需要創建一個泛型類型,但我不知道編譯時的類型。我想這樣做:從System.Type初始化通用對象
Type t = typeof(whatever);
var list = new List<t>
這不會編譯,因爲t不是有效的類型。但它確實知道所有關於有效類型的信息。有沒有辦法像這樣從System.Type動態創建通用列表?我可能需要反思,沒關係,我只是在這裏輸了一些。
我需要創建一個泛型類型,但我不知道編譯時的類型。我想這樣做:從System.Type初始化通用對象
Type t = typeof(whatever);
var list = new List<t>
這不會編譯,因爲t不是有效的類型。但它確實知道所有關於有效類型的信息。有沒有辦法像這樣從System.Type動態創建通用列表?我可能需要反思,沒關係,我只是在這裏輸了一些。
像這樣:
Type t;
Type genericListType = typeof(List<>).MakeGenericType(t);
object list = Activator.CreateInstance(genericListType);
請注意,您只能將其分配給object
類型的變量。 (雖然您可以投射到非通用的IList
界面)
要使用list
變量,您可能需要反思。
+1不知道'List <>'是合法的。很酷。 – 2010-05-14 03:16:14
@Igot:只在'typeof'中。 – SLaks 2010-05-14 03:24:58
這個效果很好,除了以後使用它很痛苦。儘管完成了工作。 – captncraig 2010-05-14 14:49:26