我在我的(巨大的).NET 4项目中遇到了一个奇怪的行为.在代码中的某个时刻,我指的是一个完全限定的类型,比如说:
System.Type type = typeof (Foo.Bar.Xyz);
Run Code Online (Sandbox Code Playgroud)
稍后,我这样做:
System.Type type = System.Type.GetType ("Foo.Bar.Xyz");
Run Code Online (Sandbox Code Playgroud)
然后我回来了null.我无法理解为什么会发生这种情况,因为我的类型名称是正确的,我已经检查过其他类型并且它们得到了正确的解决.此外,以下LINQ查询查找类型:
var types = from assembly in System.AppDomain.CurrentDomain.GetAssemblies ()
from assemblyType in assembly.GetTypes ()
where assemblyType.FullName == typeName
select assemblyType;
System.Type type = types.FirstOrDefault ();
Run Code Online (Sandbox Code Playgroud)
有什么理由System.Type.GetType可以失败吗?
我终于不得不求助于这段代码而不是GetType:
System.Type MyGetType(string typeName)
{
System.Type type = System.Type.GetType (typeName);
if (type == null)
{
var types = from assembly in System.AppDomain.CurrentDomain.GetAssemblies ()
from assemblyType in assembly.GetTypes ()
where assemblyType.FullName == typeName
select assemblyType;
type …Run Code Online (Sandbox Code Playgroud)