通过反射创建两个以上参数的泛型类型?

vex*_*exe 0 c# generics reflection types

基本上,我有:

public class Gen<T, U> { }
Run Code Online (Sandbox Code Playgroud)

我想通过该类的反射创建一个泛型类型.我尝试了以下,都产生了空值:

var asm = typeof(Program).Assembly;
var gen1 = asm.GetType("Gen`2"); // null 
var gen2 = asm.GetType("Gen<>"); // null 
var gen3 = asm.GetType("Gen");   // null
Run Code Online (Sandbox Code Playgroud)

这没有编译:

var t = typeof(Gen<>).MakeGenericType(typeof(int), typeof(string));
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现我的目标?为什么最后一个语句没有编译?那么"Gen`2"应该不会起作用吗?

Tho*_*que 10

正确的语法是这样的:

var t = typeof(Gen<,>).MakeGenericType(typeof(int), typeof(string));
Run Code Online (Sandbox Code Playgroud)

(注意之间的逗号<>)

Gen<T, U>通过反射获取类,必须指定类型的全名,包括命名空间:

var gen = asm.GetType("TheNamespace.Gen`2");
Run Code Online (Sandbox Code Playgroud)

如果Gen<T, U>该类是嵌套的,则必须将其名称与其封闭类型名称分开+:

var gen = asm.GetType("TheNamespace.EnclosingType+Gen`2");
Run Code Online (Sandbox Code Playgroud)