Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问公共静态方法时出错_C#_.net - Fatal编程技术网

C# 访问公共静态方法时出错

C# 访问公共静态方法时出错,c#,.net,C#,.net,我的应用程序中引用了一个.Net dll。 在我的C#代码中访问一个名为XYZ的方法时,我得到一个错误: 方法“MyClass.ABC()”尝试访问方法“OtherClass.XYZ()”失败 当我在VS.Net中看到元数据时,我看到它仅将此方法XYZ显示为公共静态。 请问我在这里会错过什么 谢谢。您需要使用类名来调用它。比如说 public static class MyClass { public static void MyMethod() { // Do something

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

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

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


谢谢。

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

public static class MyClass
{
  public static void MyMethod()
  { // Do something
  }
}
打电话时,您需要使用

MyClass.MyMethod();

我也有同样的问题——我的情况就是这样:

  • 我有一个程序集my.dll,它定义了
    内部静态void Foo()
  • my.dll定义了
    [程序集:InternalsVisibleTo(“unittests”)]

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

  • 我有test.localtestsettings和部署my.dll和unittests.dll
  • 通过一些混乱的操作,testsettings文件正在部署一个没有属性InternalsVisibleTo的过时版本的.dll


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

    你能给我们展示一下对公共静态方法的调用吗?你能展示一下你用来访问该方法的代码吗?如果可能的话,还有你正在调用的方法吗?请证明一些代码以供检查。还要检查是否正在使用命名空间。还要检查是否仅使用类名调用函数。请通过下面的链接,这样您将更好地了解静态方法>抱歉,在调用方法时没有提到我使用类名。已更新我的问题。谢谢。换句话说,您需要使用类型访问静态方法,并使用对象实例访问动态方法。请尝试检查访问修饰符。您确定您的类和方法在范围内吗?