我正在將遺留的VB.NET應用程序轉換爲C#應用程序。 VB.NET應用程序引用具有類MyClass
的外部.DLL(ExternalLib.dll),該類執行IMyClass
。DLL方法在C#中無法訪問,但在VB.NET中無法訪問
在VB.NET,這個代碼編譯,沒有問題,執行:
Dim external As New MyClass
external.DoMethod(1)
在C#,這代碼拋出一個編譯時間錯誤:
MyClass external = new MyClass();
external.DoMethod(1);
'ExternalLib.MyClass' does not contain a definition for 'DoMethod' and no extension method 'DoMethod' accepting a first argument of type 'ExternalLib.MyClass' could be found (are you missing a using directive or an assembly reference?)
綜觀元數據,IMyClass
沒有DoMethod()
。在VB.NET的Intellisense中,DoMethod()
不會顯示在其他可用的公共方法中,但是所有內容都可以編譯並運行。
是在VB.NET代碼設置爲'選項嚴格在'或'關'上?這可能是遲到的約束。 「IMyClass」到底在哪裏?你似乎沒有使用它.. – Blorgbeard 2015-02-11 01:02:44
改變C#@到'IMyClass external = ...',它也可能工作。 – 2015-02-11 01:12:14
當我使用「轉到定義」並且有幾個方法不包含DoMethod()時,IMyClass會顯示出來。我認爲這些信息可能會有所幫助。 VB.NET應用程序中的編譯設置是:Option explicit:On,Option strict:Off,Option compare:Binary,Option infer:Off – Kcoder 2015-02-11 01:12:46