【发布时间】:2011-04-15 01:34:34
【问题描述】:
我在我的(巨大的).NET 4 项目中遇到了一个奇怪的行为。在代码中的某个位置,我指的是完全限定类型,比如:
System.Type type = typeof (Foo.Bar.Xyz);
稍后,我会这样做:
System.Type type = System.Type.GetType ("Foo.Bar.Xyz");
然后我回复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 ();
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 = types.FirstOrDefault ();
}
return type;
}
【问题讨论】:
标签: assemblies clr types gettype