2012-05-29 196 views
1

我試圖動態創建另一個程序集中的類CommandDrawing的實例。 CommandDrawing類的默認構造函數包含對靜態方法的調用,這些靜態方法位於同一個集合中的另一個類中。創建動態類,但是,當它改掉運行在構造函數中的靜態方法調用它倒了,出現異常:動態創建具有構造函數的類,該構造函數調用另一個靜態類方法

Exception has been thrown by the target of an invocation. TypeInitializeException`The type initializer for threw an exception.

我必須在這兩個類,如果是如何加載?

我用下面的代碼來創建,我已經成功地使用之前和工作類時靜態方法調用是不是有:

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); 
} 
+0

你能提供生成動態類的代碼嗎? – ivowiblo

+0

是否有內部異常?如果是這樣,那是什麼?您不應該需要顯式加載這兩個類。 –

+0

ivowiblo - 抱歉,我正在動態創建一個類的實例,而不是類。 – gisWeeper

回答

1

也許無法加載依賴關係。如果類型初始值設定項使用另一個Assembly中可能發生的類型,因爲LoadFile不像您預期​​的那樣解決依賴關係。 MSDN says

LoadFile does not load files into the LoadFrom context, and does not resolve dependencies using the load path, as the LoadFrom method does.

所以我建議使用LoadFrom代替LoadFile

+0

對不起Botz300也沒有工作。與相同的錯誤失敗 – gisWeeper