【问题标题】:Invoke static method in static class C# ASP.NET Web Forms在静态类 C# ASP.NET Web 窗体中调用静态方法
【发布时间】:2012-01-25 06:13:33
【问题描述】:

我在 App_Code 文件夹中放置了一个静态类 TestClass。该类包含一个静态方法TestMethod。从 Default.aspx.cs 通过 Button_Click 方法,我试图调用 TestMethod。 - 测试 = TestClass.TestMethod()。 这会产生错误:“TestClass”由于其保护级别而无法访问。

感觉静态类和 _Default 类应该放在一个公共命名空间中,但这会“排除”Default.aspx 控件引用。

我做错了什么?

【问题讨论】:

标签: c# asp.net webforms


【解决方案1】:

您需要将TestClass 声明为公开:

public static class TestClass
{
    public static SomeType TestMethod()
    {
    }
}

对于类型的默认可见性为internal,对于类型定义的成员,默认可见性为privateApp_Code 文件夹被编译成它自己的程序集,与编译代码隐藏时创建的程序集不同。 internal 类型不能在程序集之间共享(这不是 100% 正确,但在这种情况下是正确的),因此您会遇到此问题。

【讨论】:

    【解决方案2】:

    尝试将其设为公开静态。

    public class TestClass{
       public static TestMethod(){}
    
    }
    

    【讨论】:

      【解决方案3】:

      确保 TestClass 是公开的:

      public class TestClass
      {
      }
      

      向 Visual Studio 添加类时的默认设置是省略“public”。

      【讨论】:

        【解决方案4】:

        确保您的方法原型至少具有“内部”范围。

        【讨论】:

          【解决方案5】:

          仅仅因为您的类是静态的,并不意味着所有代码/程序集都可以访问它。确保您的静态类具有您的 Web 表单可以访问的访问修饰符(即 public)。

          【讨论】:

            猜你喜欢
            • 2011-10-06
            • 1970-01-01
            • 1970-01-01
            • 2011-01-17
            • 2018-02-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多