c# - 在 C# 中使用类型对象作为泛型的类型参数

标签 c# generics types

我找不到在 C# 3.0/.NET 3.5 的泛型构造中使用一流类型对象(System.Type 实例)作为类型参数的方法。下面是我想做的一个简化示例:

public void test()
{
    Type someType = getSomeType(); // get some System.Type object

    MyGeneric<someType> obj = new MyGeneric<someType>();  // won't compile
}

有什么方法可以将 someType 对象用作泛型的类型参数吗?

最佳答案

您可以动态创建类型的实例:

public void test()
{
    Type someType = getSomeType(); // get some System.Type object
    Type openType = typeof(MyGeneric<>);
    Type actualType = openType.MakeGenericType(new Type[] { someType });
    object obj = Activator.CreateInstance(actualType);
}

但是您不能声明这种类型的变量,因为您不知道静态的实际类型。

关于c# - 在 C# 中使用类型对象作为泛型的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467063/

相关文章:

c# - 在目录中按顺序对文件进行编号

c# - 无法在电子邮件模板中正确显示字体和图像

C# 泛型 : Inserting T as the where T : IComparable<T> interface conflict

c# - 非泛型类中的泛型方法

java - 如何将数组中的通用对象设置为 0/null?

c# - 在 C# 中的数据类型之间进行转换

c# - 检测光盘是否在 DVD 驱动器中

java - 使用泛型编译错误

c++ - 如何在 C++ 中使用单个模板参数传递两个 lambda 函数

scala - 为什么折叠推断任何?