Автономные функции в ASP.net - PullRequest
0 голосов
/ 14 декабря 2009

Никогда не видел, чтобы это делалось на asp.net, но тем не менее, могу ли я определять функции, не будучи частью класса?

Я хотел бы иметь служебную библиотеку. В настоящее время у меня есть класс Utils, и каждый раз, когда мне нужно использовать его для таких вещей, как заполнение выпадающих списков, я должен создавать и инициировать объект Utils () ... любым способом, который не требует объявления статического класса, чего я бы не хотел делать, как я получаю доступ к сессии в нем?

Я использую c #, а не VB.

Спасибо

Ответы [ 6 ]

5 голосов
/ 14 декабря 2009

Невозможно иметь методы вне классов.

Типичное решение в вашем случае - создать класс Utility, полный статических методов ... таким образом, вам не нужно беспокоиться о создании экземпляра класса для использования его методов.

И, как упоминал Джоэл ... вы все равно можете получить доступ к сеансу статическим методом.

3 голосов
/ 14 декабря 2009

Вы всегда можете использовать методы расширения.

http://msdn.microsoft.com/en-us/library/bb383977.aspx

Затем вы можете добавить методы к существующим объектам.

Вы также можете создать базовый класс, от которого наследуются все ваши страницы и который содержит необходимые вам методы. Это все еще часть класса, но вам не нужно создавать новый экземпляр или использовать статические методы.

2 голосов
/ 14 декабря 2009

Вы по-прежнему можете обращаться к переменным 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;
    }
}
1 голос
/ 14 декабря 2009

Все ваши страницы могут быть получены из класса BasePage и помещать все ваши методы util (или оболочки) в базовый класс страниц

0 голосов
/ 14 декабря 2009

Вы можете получить доступ к переменным Session, используя HttpContext.Current.Session [], и вы можете сделать это из любого класса (на самом деле, во многих приложениях, которые используют переменные Session, я инкапсулирую все свои переменные сеанса в их собственные класс).

Сказав это, нет способа иметь метод вне класса, и на самом деле нет [хорошей] причины для этого.

0 голосов
/ 14 декабря 2009

Если у класса есть состояние, оставьте его в покое. В качестве альтернативы возьмите свое состояние в качестве параметров, а затем сделайте его статическим.

...