簡體   English   中英

試圖獲取引用的vb.net dll以在C#中顯示對話框

[英]Trying to get a referenced vb.net dll to showdialog in c#

我在c#項目中引用了舊版vb.net dll。 調用各種方法都沒問題,但是我需要能夠顯示dll中的表格,以便用戶可以從數據庫響應中選擇正確的行。

Assembly assembly = Assembly.LoadFile("FMSValidation.dll");

沒有產生錯誤,但是

Type   type  = assembly.GetType (FMSValidation.CreditorDetails );

告訴我“ CreditorDetails”是一種類型,在上下文中無效。

assembly.GetType不接受實際類型。 它接受一個字符串:

Type type = assembly.GetType("FMSValidation.CreditorDetails");

assembly.GetType可以采用類型是沒有意義的,因為此時您已經具有類型。

一旦有了類型,就可以使用activator類創建它的實例:

var form = (System.Windows.Forms.Form)Activator.CreateInstance(type);
form.ShowDialog();

如果CreditorDetails需要任何構造函數參數,請使用CreateInstance的重載來接受參數數組。


似乎編譯器知道FMSValidation.CreditorDetails是一種類型-所以我想知道為什么您要動態加載程序集並嘗試完全使用GetType。 您應該能夠添加對程序集的引用,並像使用其他類型一樣使用其類型,例如new FMSValidation.CreditorDetails()

FMSValidation.CreditorDetails是一個類型,但不是實際的Type對象。 如果您想要一個實際的類型對象,並且可以在源代碼中寫入類型的名稱(即它不在字符串變量之類的東西中),則可以使用typeof(FMSValidation.CreditorDetails)而不是assembly.GetType

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM