有没有人知道是否可以动态地将类类型传递给需要Type TObject的类?
我的控制器类声明如下:
public class DataController<TObject> where TObject : class
在某些情况下,我不知道“TObject”在运行时会是什么,所以我想知道是否有办法像我在下面尝试的那样做什么?当这个代码命中时,我知道Type并且它存储在“t”中,我将这个传递给这个方法:
private void RefreshGrid(Type t, DataGridView ctl)
{
DataController<t> cDataController = new DataController<t>();
//... other stuff
cDataController = null;
}
显然,这里的语法失败,因为“t”是一个像类型一样使用的变量,编译器正确地告诉我。
非常感谢提前。
答案 0 :(得分:0)
我不确定我是否完全理解您的问题,但如果您想创建开放式通用类型的实例,则可以使用Activator
private void RefreshGrid(Type t, DataGridView ctl)
{
var openGenericType = typeof(DataController<>);
var genericType = openGenericType.MakeGenericType(t);
var instance = Activator.CreateInstance(genericType); //Instance is type of DataController<T> where T is type of "t"
//If you need to access instance's members, you can use System.Reflection
//Other stuff...
instance = null;
}
如果您更全面地指定要实现的目标,也许可以获得更好的性能和可读性。