我想从这样的泛型类型全名中获取类型:
var myType = Type.GetType("MyProject.MyGenericType`1[[MyProject.MySimpleType, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]");
Run Code Online (Sandbox Code Playgroud)
但它似乎不适用于这样的泛型类型......
这样做的好方法是什么?
如果不指定程序集限定名称,则Type.GetType仅适用于mscorlib类型。在您的示例中,您仅为嵌入类型参数定义了 AQN。
// this returns null:
var type = Type.GetType("MyProject.MyGenericType`1[[MyProject.MySimpleType, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]");
// but this works:
var type = Type.GetType("MyProject.MyGenericType`1[[MyProject.MySimpleType, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
Run Code Online (Sandbox Code Playgroud)
Assembly.GetType如果您使用而不是,您的原始类型字符串将起作用Type.GetType:
var myAsm = typeof(MyGenericType<>).Assembly;
var type = myAsm.GetType("MyProject.MyGenericType`1[[MyProject.MySimpleType, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]");
Run Code Online (Sandbox Code Playgroud)