从System.Type初始化通用对象
我需要创建一个generics类型,但我不知道编译时的类型。 我想这样做:
Type t = typeof(whatever); var list = new List
这不会编译,因为t不是有效类型。 但它确实知道一个有效的类型。 有没有办法从System.Type中动态创建通用列表? 我可能需要反思,没关系,我在这里有点迷失。
像这样:
Type t; Type genericListType = typeof(List<>).MakeGenericType(t); object list = Activator.CreateInstance(genericListType);
请注意,您只能将其分配给object
类型的变量。 (尽管您可以转换为非通用IList
接口)
要使用list
变量,您可能需要reflection。