16

この小さなコードがあるとします:

public static void LoadSomething(Type t)
{            
    var t1 = Type.GetType(t.AssemblyQualifiedName);

    var t2 = t
        .Assembly
        .GetTypes()
        .First(ta => ta.AssemblyQualifiedName == t.AssemblyQualifiedName);
}

t1 がnullで、 t2 が null ではないということです。そう呼ぶと困惑してしまったので…

LoadSomething(typeof(SomeObject));

どちらもnullではありませんが、私が実際に行っていることは次のようなものです(実際にはそうではありませんが、これは非常に単純化されていますが、私の要点を示しています):

LoadSomething(Assembly.LoadFile(@"C:\....dll").GetTypes().First());

だから私の質問の最初の部分(私の情報のため)は...

Type.GetType2 番目のケースでは、アセンブリをロードする必要があり、そこから型を見つけたのに、 null が返されるのはなぜですか?

そして第二に(実際に私の問題を解決するために)...

アセンブリ修飾名を文字列としてしか持っていない場合に型をロードできる他の方法はありますか (Assembly.Load メソッドを使用して以前にロードされていることがわかっています)。

4

3 に答える 3