确定运行时中的类型并将其应用于泛型类型 - 我该怎么做?

时间:2008-11-28 17:33:26

标签: c# types

我想创建一个强类型列表并在运行时决定类型。这是我的代码。我认为它应该可行,但它不会:)

        Type elementType = Type.GetType(parts[0].Trim(),false,true);
        var elementsBeingSet = new List<elementType>();

您是否有任何想法如何创建一个强类型列表,其类型I将在运行时决定?

重复:这是其他版本:

1 个答案:

答案 0 :(得分:20)

使用Type.MakeGenericType(type[])

Type elementType = GetElementType(); // get this type at runtime
Type listType = typeof(List<>);
Type combinedType = listType.MakeGenericType(elementType);
IList elements = (IList) Activator.CreateInstance(combinedType);

您必须使用IList来保留结果 - 因为您不知道将在运行时使用的实际类型。

对于具有多个类型参数的泛型类型,您可以使用类似Dictionary<,>的内容。

另见http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx