访问公共静态方法时出错



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

方法"MyClass.ABC()"尝试访问方法"OtherClass.XYZ()"失败。

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

谢谢。

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

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

打电话时需要使用

MyClass.MyMethod();

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

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

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

  4. 我有带有deploymy.dll和unittests.dll的test.localtessettings

通过一些繁琐的操作,testsettings文件正在部署一个没有AttributeInternalsVisibleTo的过时版本的.dll。

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

最新更新