使用类型对象作为类型参数在C#泛型 [英] Using Type objects as Type Parameters for Generics in C#

查看:224
本文介绍了使用类型对象作为类型参数在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆