【发布时间】:2011-07-28 05:37:53
【问题描述】:
我想将在运行时(通过 TypeBuilder)生成的类型传递给泛型类中的泛型方法。我不能将它作为对象传递,因为反射用于查找各种属性。
据我了解,这是无法做到的,因为泛型是在编译时而不是运行时应用的。
我知道我可以改变类似的方法
public T Read()
{
T data = new T()
...
return data;
}
变得像
public object Read(Type newType)
{
object data = Activator.CreateInstance(newType);
...
return data;
}
但是当类型已知时,这显然失去了泛型的所有优点,所以我可能会以这两种方法结束,不幸的是,这意味着还要复制相当多的其他辅助函数。
有没有更好的方法来解决这个问题?
这个特定的项目需要在3.5框架下工作,但如果在3.5下不可能,但在4.0下,我不介意知道。
【问题讨论】:
标签: c# generics .net-3.5 reflection.emit