将泛型类型构造函数转换为非泛型类型构造函数

时间:2019-04-25 07:34:21

标签: c# generics reflection

例如,我上课

class TestClass<T>
{
}

我有一些方法可以接收此类的构造函数。 我想用一些通用参数调用该构造函数,而无需再次调用MakeGenericType和GetConstructor方法。

static void Main()
{
    var ctor = typeof (TestClass<>).GetConstructors().First();
    Invoke(ctor );
}

static void Invoke(ConstructorInfo ctor)
{
    //ctor.Invoke() - it will not work because TestClass has a generic parameter.
    // I want something like ctor.MakeGenericMethod(typeof(int)).Invoke();
}

有可能吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

找到解决方案:

MethodBase.GetMethodFromHandle(ctor.MethodHandle, typeof(TestClass<int>).TypeHandle);