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