从未在asp.net中看到过这种情况,但从未如此,我可以在不成为类的一部分的情况下定义函数吗?
我想要的是一个实用程序库。目前我有Utils类,每次我都需要使用它来填充下拉列表,我必须创建和初始化Utils()对象...除了声明类静态之外我还不想做任何麻烦当我在其中访问会话时?
我使用的是c#,而不是VB。
由于
答案 0 :(得分:5)
没有办法让课外的方法。
在您的情况下,典型的解决方案是创建一个充满静态方法的Utility类......这样您就不必担心创建类的实例来利用其方法。
就像Joel提到的那样......你仍然可以通过静态方法访问会话。
答案 1 :(得分:3)
您始终可以使用扩展方法。
http://msdn.microsoft.com/en-us/library/bb383977.aspx
然后,您可以将方法添加到现有对象。
您还可以创建一个基类,您的所有页面都从该基类继承并包含您需要的方法。它仍然是类的一部分,但您不需要实例化新的,也不需要使用静态方法。
答案 2 :(得分:2)
您仍然可以在静态类中访问Session变量。一种方式可能是这样的:
public static class Utils
{
private static HttpSessionState Session
{
get { return HttpContext.Current.Session; }
}
public static string DoThing(string input)
{
// here you can access session variables like you're used to:
Session["foo"] = input;
}
}
答案 3 :(得分:1)
您可以将所有页面派生自BasePage类,并将所有util方法(或包装器)放入基页类
答案 4 :(得分:0)
如果班级有州,那就不管它了。或者,将您的状态作为参数,然后将其设置为静态。
答案 5 :(得分:0)
您可以使用HttpContext.Current.Session []访问Session变量,并且您可以从任何类执行此操作(实际上,在我使用Session变量的许多应用程序中,我将所有会话变量封装在自己的类)。
话虽如此,没有办法在课外有一个方法,并且确实没有[好]理由这样做。