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