使用类名字符串作为通用类型参数

时间:2019-08-25 01:21:22

标签: c# class generics reflection

我有一个Unpack()函数,该函数带有一个通用参数T,其中T是一个类,即

var test = Unpack<ExampleClass>();

上面的示例工作正常,但是我处于需要执行与上面相同的情况,但是我只知道字符串中的类/通用参数名称。换句话说,我该如何执行与上述相同的操作:

string className = "ExampleClass";

代替类ExampleClass

1 个答案:

答案 0 :(得分:2)

您可以使用MethodInfo.MakeGenericMethod

例如

您可以将解决方案分为两部分。首先从字符串表示形式获取ExampleClass的类型。

Type type = Type.GetType("ExampleNameSpace.ExampleClass");

然后使用MakeGenericMethod调用传递类型的方法。

MethodInfo method = this.GetType().GetMethod(nameof(Unpack));
MethodInfo generic = method.MakeGenericMethod(type);
generic.Invoke(this, null);