DLL方法无法在C#中访问,但在VB.NET中无法访问

时间:2015-02-11 00:51:27

标签: c# vb.net dll

我正在将旧版VB.NET应用程序转换为C#应用程序。 VB.NET应用程序引用一个外部.DLL(ExternalLib.dll),它具有实现MyClass的类IMyClass

在VB.NET中,此代码编译并执行没有问题:

Dim external As New MyClass
external.DoMethod(1)

在C#中,此代码抛出编译时错误:

MyClass external = new MyClass();
external.DoMethod(1);
  

' ExternalLib.MyClass'不包含' DoMethod'的定义和   没有延伸方法' DoMethod'接受第一个类型的参数   ' ExternalLib.MyClass'可以找到(你错过了使用   指令或程序集引用?)

查看元数据,IMyClass没有DoMethod()。在VB.NET的智能感知中,DoMethod()没有显示在其他可用的公共方法中,但是所有内容都编译并运行得很好。

2 个答案:

答案 0 :(得分:1)

DoMethod()是静态方法还是实例方法?如果它是一个静态方法,可以解释为什么你在界面中看不到它。您需要将C#代码更改为:

MyClass.DoMethod(1);

答案 1 :(得分:0)

VB.NET应用程序使用后期绑定option strict off来访问ExternalLib.dll中的隐藏方法。使用dynamic关键字可以在C#应用程序中实现相同的行为:

dynamic external = new MyClass();
external.DoMethod(1);

(感谢Blorgbeard指出我正确的方向。)