我在App_Code文件夹中放置了一个静态类TestClass。该类包含一个静态方法TestMethod。从Default.aspx.cs通过Button_Click方法,我试图调用TestMethod。 - test = TestClass.TestMethod()。 这会产生错误:由于其保护级别,“TestClass”无法访问。
感觉静态类和_Default类应放在一个公共命名空间中,但这会“排除”Default.aspx控件引用。
我做错了什么?
答案 0 :(得分:3)
您需要将TestClass
声明为公开:
public static class TestClass
{
public static SomeType TestMethod()
{
}
}
对于类型,默认可见性为internal
,对于类型定义的成员,默认可见性为private
。 App_Code
文件夹被编译到自己的程序集中,与编译后台代码时创建的程序集不同。 internal
类型不能在程序集之间共享(在这种情况下不是100%为真,而是真实的),因此您遇到此问题的原因。
答案 1 :(得分:1)
尝试将其设为公开静态。
public class TestClass{
public static TestMethod(){}
}
答案 2 :(得分:1)
确保TestClass是公开的:
public class TestClass
{
}
向Visual Studio添加类时的默认设置是省略“public”。
答案 3 :(得分:1)
确保您的方法原型至少具有“内部”范围。
答案 4 :(得分:0)
仅仅因为您的类是静态的并不意味着所有代码/程序集都可以访问它。确保您的静态类具有可由Web表单访问的访问修饰符(即公共)。