-2

以下の同じクラスの 2 つのインスタンスを比較してください。変数instanceAはリフレクションを使用してinstanceB作成されますが、VS2012 プロジェクトから DLL への直接参照を使用して作成されます。

var a = Assembly.Load(File.ReadAllBytes(@"C:\MyFilePath.dll"));
var t = a.GetType("Namespace.MyClassType");

var instanceA = Activator.CreateInstance(t);
var instanceB = new Namespace.MyClassType();

問題?これらは等しくありませんinstanceAとのフィールドinstanceBは異なります。を使用している限り、現在私のコードは機能していinstanceBます。しかし、文字「B」のみを「A」に変更すると、結果のオブジェクトは多少異なり、後の段階で製品が壊れます。

ご存じのとおり、私の仕事は参照の代わりにリフレクションを使用することです。正しいコンストラクタが呼び出されていることを確認しました。

4

1 に答える 1

2

問題は、さまざまなアセンブリを持っていることです.1つのケースでは、バイト配列からアセンブリをロードしました (これはたまたまディスクに として保存されていましMyFilePath.dllた)。プロジェクト内の参照による AppDomain。

コンテキストが何であるか (さまざまなアセンブリがどこにあるかなど) は正確にはわかりませんが、アセンブリをどのようにロードしているかを調べる必要がありますActivator.CreateInstance

于 2013-10-02T14:08:41.020 に答える