-1

我的应用程序中引用了一个 .Net dll。在我的 C# 代码中访问它的一个名为 XYZ 的方法时,我收到一个错误:

尝试通过方法“MyClass.ABC()”访问方法“OtherClass.XYZ()”失败。

当我在 VS.Net 中看到元数据时,我看到它仅将此方法 XYZ 显示为公共静态。请问我在这里会缺少什么?

谢谢。

4

2 回答 2

0

您需要使用类名来调用它。例如

public static class MyClass
{
  public static void MyMethod()
  { // Do something
  }
}

调用时需要使用

MyClass.MyMethod();
于 2012-07-09T09:07:03.740 回答
0

我遇到了同样的问题 - 这就是我的情况:

  1. 我有一个程序集 my.dll 定义 internal static void Foo();
  2. my.dll 定义[assembly:InternalsVisibleTo("unittests")]

  3. 我有一个调用 Foo() 的测试程序集 unittests.dll。

  4. 我有 test.localtestsettings 并部署了 my.dll 和 unittests.dll。

通过一些胡说八道,testsettings 文件正在部署一个陈旧版本的 a.dll,它没有 AttributeInternalsVisibleTo。

这使我处于代码通过编译时检查但在运行时抛出 MethodAccessException 的位置。在我的情况下,原因是从程序集中调用了一个内部方法,它不应该对其可见。这是一种我不喜欢调试的安全异常。祝你好运。

于 2013-06-13T08:49:43.223 回答