错误*问一个公共的静态方法

问题描述:

我在我的应用程序引用的NET的DLL。 在访问其方法在我的C#代码名为XYZ之一,我得到一个错误:错误*问一个公共的静态方法

Attempt by method 'MyClass.ABC()' to access method 'OtherClass.XYZ()' failed.

当我看到在VS.Net中的元数据,我看到它表明,该方法XYZ,因为只有公共静态。 请问我在这里可能会错过什么?

谢谢。

+0

,你能否告诉我们呼吁 – Adil 2012-07-09 09:00:28

+0

你能告诉你正在使用访问方法的代码公共静态方法,如果可能的方法你是哪位? – 2012-07-09 09:00:41

+0

请证明一些代码来检查。 同时检查您是否使用了命名空间。还要检查函数是否仅通过使用类名来调用。 – Narendra 2012-07-09 09:03:44

你需要使用类名来称呼它。对于当调用例如

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

你需要使用

MyClass.MyMethod(); 
+0

换句话说,你需要使用的类型访问静态方法并使用对象实例访问动态方法。 – 2012-07-09 09:09:33

+0

编辑了我的问题。谢谢。 – Jimmy 2012-07-09 10:34:58

+0

尝试检查访问修饰符。你确定你的班级和方法在范围内吗? – 2012-07-10 11:00:24

我有同样的问题 - 这是我的情况下发生了什么:

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

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

  4. 我有展开时my.dll和unittests.dll test.localtestsettings。

通过一些mumbo jumbo,testsettings文件正在部署一个没有AttributeInternalsVisibleTo的过时版本的a.dll。

这可把我当代码经过编译时检查,但在运行时扔了MethodAccessException的位置。原因在我的情况是一个内部方法从一个程序集调用它不应该是可见的。这是一种我不喜欢调试的安全异常。祝你好运。