Pourquoi serait-Système.Type.GetType(“Xyz”) retourne la valeur null si typeof(Xyz) existe?

J'ai rencontré un drôle de comportement dans mon (énorme) .NET 4 du projet. À un certain point dans le code, je me réfère à un type pleinement qualifié, dire:

System.Type type = typeof (Foo.Bar.Xyz);

plus tard, je fais ceci:

System.Type type = System.Type.GetType ("Foo.Bar.Xyz");

et je serai de retour null. Je ne peux pas comprendre pourquoi ce qui se passe, parce que mon nom de type est correct, et j'ai vérifié avec d'autres types et ils réglés correctement. En outre, à la suite d'une requête LINQ détecte le type:

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 ();

Il System.Type.GetType pu échouer?

J'ai enfin eu à recourir à ce morceau de code au lieu de 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;
}