1

CommandDrawing別のアセンブリにあるクラスのインスタンスを動的に作成しようとしています。クラスのCommandDrawingデフォルト コンストラクターには、同じアセンブリ内の別のクラスにある静的メソッドへの呼び出しが含まれています。動的クラスが作成されますが、コンストラクターで静的メソッド呼び出しを実行しようとすると、例外が発生してフォールオーバーします。

呼び出しのターゲットによって例外がスローされました。TypeInitializeException`の型初期化子が例外をスローしました。

両方のクラスにロードする必要がありますか?

以下のコードを使用して、以前に正常に使用したクラスを作成し、静的メソッド呼び出しが存在しない場合に機能します。

Assembly assemblyCommandDrawing = System.Reflection.Assembly.LoadFile(@"D:\ManifoldInspections.dll");
Type typeCommandDrawing = assemblyCommandDrawing.GetType("InspectionDetails.CommandDrawing");
object cmd = System.Activator.CreateInstance (typeCommandDrawing, new object[] { drawing, DrawingBaseDetail });

CommandDrawingデフォルトのコンストラクターは次のようになります。注UtilityMapControl.SetupDrawingTableTemplateは、呼び出している静的メソッドであり、ここに落ちます。

public CommandDrawing(Manifold.Interop.Drawing p_Drawing, InspectionDetails.DrawingBaseDetail p_ClassDetailTemplate)
{
  this.Drawing = p_Drawing;
  //this.ClassDetailTemplate = p_ClassDetailTemplate.GetType();
  this.ClassDetailTemplate = p_ClassDetailTemplate;
  ManifoldInspections.Utility.UtilityMapControl.SetupDrawingTableTemplate(this.Drawing, p_ClassDetailTemplate);
}
4

1 に答える 1

1

依存関係を読み込めなかった可能性があります。型初期化子が別の Assembly の型を使用すると、LoadFile期待どおりに依存関係が解決されないため、発生する可能性があります。MSDN は次のように述べています

LoadFileファイルをLoadFromコンテキストにロードせず、メソッドのようにロード パスを使用して依存関係を解決しませんLoadFrom

LoadFromの代わりに使用することをお勧めしLoadFileます。

于 2012-05-29T14:32:14.270 に答える