In the following code fragment, Type.GetType
on the final line sometimes returns null.
string assemblyName = "My.AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
string typeName = "My.Namespaced.ClassName";
Type t1 = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.FirstOrDefault(x => x.FullName == TypeName &&
x.Assembly.FullName == AssemblyName);
string qualifiedName = t1.AssemblyQualifiedName; // this result looks sane
Type t2 = Type.GetType(qualifiedName); // returns null
As you can see, I'm using the fully qualified name returned by Type.AssemblyQualifiedName
, and as expected, the value of qualifiedName
is My.Namespaced.ClassName, My.AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
.
At some point in my callstack, Type.GetType
returns the expected type, but then, if we make a call into another assembly, the exact same snippet of code results in t1
finding the type, but t2
being null.
I see StackOverflow is littered with duplicate questions when people have not used the assembly qualified name, but that's not the case here.
Aucun commentaire:
Enregistrer un commentaire