Реализация IDisposable в подклассе, когда родительский элемент также реализует IDisposable.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Реализация IDisposable в подклассе, когда родительский элемент также реализует IDisposable.

Сообщение Anonymous »

У меня есть родительский и дочерний класс, оба из которых должны реализовать IDisposable. Где должны использоваться виртуальные (и base.Dispose()?) вызовы? Когда я просто переопределяю вызов Dispose(bool dispositing), мне кажется очень странным заявлять, что я реализую IDisposable без явной функции Dispose() (просто используя унаследованную), но иметь все остальное.

То, что я делал (немного упрощенно):

internal class FooBase : IDisposable
{
Socket baseSocket;

private void SendNormalShutdown() { }

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

private bool _disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
SendNormalShutdown();
}
baseSocket.Close();
}
}

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

internal class Foo : FooBase, IDisposable
{
Socket extraSocket;

private bool _disposed = false;
protected override void Dispose(bool disposing)
{
if (!_disposed)
{
extraSocket.Close();
}
base.Dispose(disposing);
}

~Foo()
{
Dispose(false);
}

}


Подробнее здесь: https://stackoverflow.com/questions/249 ... -idisposab
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»