访问公共静态方法时出错

时间:2012-07-09 08:59:05

标签: c# .net

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

  

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

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

打电话时需要使用

MyClass.MyMethod();

答案 1 :(得分:0)

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

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

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

  4. 我有部署my.dll和unittests.dll的test.localtestsettings。
  5. 通过一些mumbo jumbo,testsettings文件正在部署一个陈旧版本的a.dll,它没有AttributeInternalsVisibleTo。

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

相关问题