ASP.NET: реализация методов Init и Dispose - PullRequest
1 голос
/ 12 апреля 2011

Может ли веб-приложение ASP.NET иметь только один Init и один Dispose метод или я могу реализовать их для каждого класса для тех, с которыми я хочу связать такие методы?

Более конкретно, у меня есть Customer компонент и классы CustomerRecord, и я хотел бы реализовать методы Init и Dispose в обоих из них.

Как правильно это сделать?

Требование:

Я хочу иметь независимые Init и Dispose методы для каждого вышеупомянутого класса.

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Для классов, которые должны быть одноразовыми, путем предоставления общедоступного метода Dispose, интерфейс IDispsable должен быть реализован так, чтобы «одноразовость» была эффективной вне рамок явного удаления пользователя.Это было рассмотрено много раз во многих местах, , включая здесь , например:

public class Customer : IDisposable
{
    public void Dispose()
    {
        Dispose(true);
        GC.SupressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            //dispose of managed resources
        }
        //dispose of unmanaged resources
    }

    ~Customer()
    {
        Dispose(false);
    }
}

Обратите внимание, что деструктор (метод, начинающийся с тильды ~) может не понадобиться, но прочитайте подробности из ответа, который я привел выше, для ясности ситуации что и почему - это просто отвечает на ваш вопрос напрямую.

Что касается Init метод, вы ссылаетесь на конструктор ?

Если это так, то посмотрите на деструктор в приведенном выше примере;конструктор (или инициализатор) может быть определен таким же образом минус тильда и, как правило, плюс явный модификатор доступа (public, private, и так далее), например:

public class Customer
{
    public Customer()
    {

    }
}
0 голосов
/ 12 апреля 2011

Вы можете создать базовый класс с помощью методов Init и Dispose по своему усмотрению, а затем сделать другие классы наследуемыми от него. Например:

public class BaseClass
{
    public void Init()
    {
        //Some code
    }

    public void Dispose()
    {
        //Some code
    }
}

public class Customer : BaseClass
{
    //Some code
}

Это может помочь тебе.

...