Вам не нужно реализовывать Dispose () для каждого класса - только те, которые требуют детерминированной очистки. Что касается одноразового базового класса, я не совсем уверен, что он предоставляет много всего - IDisposable
не сложный интерфейс. Основное время может быть полезным, если вы работаете с неуправляемыми ресурсами и хотите получить финализатор, но даже в этом случае кода не так много.
Лично я не стал бы беспокоиться о таком базовом классе. В частности, наследование (в мире с одним наследованием) очень быстро становится ограничительным. Но, что более важно, переопределение метода мало чем отличается от простого предоставления открытого метода Dispose ().
Опять же: вам нужен финализатор и т. Д. Только если вы работаете с неуправляемыми объектами.
Если бы у меня было много таких (неуправляемых ресурсов), я мог бы посмотреть, смогу ли я получить PostSharp , чтобы сделать работу за меня. Я не знаю, существует ли он уже, но возможно создать аспект, который обрабатывает (в частности) финализатор и т. Д. Кто знает ...