Для меня проще использовать Fody, чем наследоваться от класса.
Плюс Janitor.Fody сам расставляет проверки с выбросами ObjectDisposedException, что универсальный базовый класс сделать не может в принципе.
А так на вкус и цвет все фломастеры разные.
Я просто посчитал правильным сначала рассмотреть те варианты, которые моя реализация не покрывает.
Сложность постобработки, в невозможности отладки такого кода, что часто критично.
На мой взгляд проще и вернее использовать каноническую реализацию из MSDN, а все остальное может породить сложно диагностируемые проблемы…
Самая простая и надежная реализация шаблона проектирования Dispose