アセンブリ修飾名を指定しない場合、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");
あなたの代わりにType.GetType
のAssembly.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]]");
あなたは正しい、 "<" を閉じるためのもの?もしそうでなければ、それは最初のエラーです。 – piojo