【发布时间】:2014-07-16 22:45:05
【问题描述】:
我有一种情况,我希望能够将 Type 作为泛型参数传递。我的问题是,一旦我使用 typeof() 获取类型,我无法弄清楚如何将其恢复为允许我将其作为泛型参数传递的表单,即使类型仍然是一个类输入。
下面纯粹是为了演示我的问题,我实际上并没有在已经被限制为类类型的东西上调用 typeof():
public void Example<T>() where T : class
{
//This works fine.
var firstList = new List<T>();
Type aType = typeof(T);
//This resolves to true.
bool thisIsTrue = aType.IsClass;
//This does not compile?!?
var secondList = new List<aType>();
}
回答以下任何问题都可能解决我的问题:
-- 是否有类似于 typeof()、.GetType() 等的命令,可以让我将结果约束到一个类,以便编译器接受它作为泛型参数?这样我就可以完全避免从类型到类的问题了。
-- 真的有办法将类型转换为类吗?我找不到从该类型或所述类型的实例化对象中执行此操作的方法。
-- 作为最后的手段,我是否需要在运行时动态定义这些类才能真正让它工作?
【问题讨论】:
标签: c# generics reflection