ASP.net中的独立功能

时间:2009-12-14 18:31:22

标签: c# asp.net class class-design

从未在asp.net中看到过这种情况,但从未如此,我可以在不成为类的一部分的情况下定义函数吗?

我想要的是一个实用程序库。目前我有Utils类,每次我都需要使用它来填充下拉列表,我必须创建和初始化Utils()对象...除了声明类静态之外我还不想做任何麻烦当我在其中访问会话时?

我使用的是c#,而不是VB。

由于

6 个答案:

答案 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变量的许多应用程序中,我将所有会话变量封装在自己的类)。

话虽如此,没有办法在课外有一个方法,并且确实没有[好]理由这样做。