Для классов, которые должны быть одноразовыми, путем предоставления общедоступного метода 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()
{
}
}