2012-01-24 149 views
1

我在App_Code文件夹中放置了一个静态类TestClass。该类包含一个静态方法TestMethod。从Default.aspx.cs通过Button_Click方法,我试图调用TestMethod。 - test = TestClass.TestMethod()。 这给出错误:由于其保护级别,“TestClass”无法访问。在静态类中调用静态方法C#ASP.NET Web窗体

感觉就像静态类和_Default类应该被放置到一个公共名称空间中,但是这会“排除”Default.aspx控件引用。

我在做什么错?

+0

这里是一个很好的链接,看看会解释访问修饰http://msdn.microsoft.com/en-us/library/wxh6fsc7%28v=vs.71%29.aspx – MethodMan

回答

3

需要声明TestClass为市民:

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

默认能见度internal的类型和private的类型定义的成员。 App_Code文件夹被编译到它自己的程序集中,与编译代码时创建的程序集不同。 internal类型不能在程序集之间共享(在这种情况下,这不是100%真实但是是真的),因此你有这个问题。当添加类到Visual Studio是省略了“公共”

public class TestClass 
{ 
} 

默认:

+0

非常好!谢谢你! – user1121487

1

试着让它成为静态的。

public class TestClass{ 
    public static TestMethod(){} 

} 
1

确保识别TestClass是公开的。

1

请确保您的方法原型至少有'内部'范围。

0

仅仅因为你的类是静态的并不意味着它可以被所有代码/程序集访问。确保你的静态类有一个访问修饰符(即public),可以通过你的web表单访问。