Если родительский класс использует шаблон Microsoft IDisposable, дочерний класс не должен переопределять Dispose (void), а должен переопределять Dispose (Boolean Disposing).Если вызывается с Disposing true, он должен удалить дочерний класс и вызвать base.Dispose (True).Если вызывается с Disposing false, в большинстве случаев он не должен ничего делать, кроме вызова base.Dispose (False).
Обратите внимание, что в большинстве случаев вызов base.Dispose (False) ничего не делает, но долженбыть сделано в любом случае.Если дочернему классу нужно будет добавить дополнительные «неуправляемые ресурсы» (т. Е. Если у него есть дополнительные обязанности, которые необходимо выполнить в финализаторе), он, как правило, должен инкапсулировать эти обязанности в другом объекте.Обратите внимание, что вопрос о том, имеет ли класс финализатор, - это не просто «деталь реализации»;добавление финализатора к базовому классу может привести к серьезным изменениям, приводящим к тому, что программа, которая утекла бы ресурсы (плохие, но, возможно, выжившие, если программа не запускается слишком долго за раз), в случайный случай.попытаться очистить ресурсы, которые все еще используются (не часто вызывают проблемы, но могут вызывать редкие, но немедленные сбои).