如何将动态类型传递给需要<tobject>的类

时间:2017-11-04 17:54:09

标签: c# entity-framework dynamic

有没有人知道是否可以动态地将类类型传递给需要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”是一个像类型一样使用的变量,编译器正确地告诉我。

非常感谢提前。

1 个答案:

答案 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;
}

如果您更全面地指定要实现的目标,也许可以获得更好的性能和可读性。