我的应用程序中引用了一个.Net dll。在我的C#代码中访问一个名为XYZ的方法时,我得到了一个错误:
方法"MyClass.ABC()"尝试访问方法"OtherClass.XYZ()"失败。
当我在VS.Net中看到元数据时,我看到它只将此方法XYZ显示为公共静态。我在这里能少些什么?
谢谢。
您需要使用类名来调用它。例如
public static class MyClass
{
public static void MyMethod()
{ // Do something
}
}
打电话时需要使用
MyClass.MyMethod();
我遇到了同样的问题-这就是我的情况:
- 我有一个程序集my.dll,它定义了
internal static void Foo();
-
my.dll定义
[assembly:InternalsVisibleTo("unittests")]
-
我有一个测试程序集unittests.dll,它调用Foo()。
- 我有带有deploymy.dll和unittests.dll的test.localtessettings
通过一些繁琐的操作,testsettings文件正在部署一个没有AttributeInternalsVisibleTo的过时版本的.dll。
这使我处于这样一个位置:代码通过了编译时检查,但在运行时抛出了MethodAccessException。在我的案例中,原因是从程序集调用了一个内部方法,而该方法本不应该是可见的。这是一种我不喜欢调试的安全异常类型。祝你好运