Я столкнулся с странным поведением в моем (огромном) проекте .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;
}