使用类型对象作为类型参数在C#泛型 [英] Using Type objects as Type Parameters for Generics in C#
本文介绍了使用类型对象作为类型参数在C#泛型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不能找到一种方法,在C#3.0 / .NET 3.5使用了一流的Type对象(例如的System.Type)作为一个类型参数在一个通用的建设。下面是我想要做一个简单的例子:
I cannot find a way to use a first-class Type object (System.Type instance) as a Type Parameter in a generic construction in C# 3.0 / .NET 3.5. Below is a simplified example of what I want to do:
public void test()
{
Type someType = getSomeType(); // get some System.Type object
MyGeneric<someType> obj = new MyGeneric<someType>(); // won't compile
}
有没有办法使用的 SOMETYPE 的对象作为一个通用
推荐答案
您可以动态地创建类型的实例:<? / p>
You can dynamically create an instance of the type :
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);
}
但是你不能的声明的一个变量这种类型的,因为你不知道实际的静态类型
However you can't declare a variable of this type, since you don't know the actual type statically.
这篇关于使用类型对象作为类型参数在C#泛型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文