[英]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.