У меня есть иерархия классов, каждый из которых может создавать объекты IDisposable
.
Я добавил свойство List<IDisposable>
базовому классу в этой иерархии, к которому я добавляю любые одноразовые объекты при создании. Корневой метод Dispose
выполняет итерацию через этот список и вызывает Dispose
для каждого элемента в своем списке и очищает список. В приложении я явно вызываю метод верхнего объекта Dispose
, вызывая удаление каскада через иерархию.
Это работает, но есть ли лучший способ? Я невольно дублирую некоторые функции, уже присутствующие в рамках?
(Обратите внимание: объекты, о которых идет речь, имеют срок службы, что исключает возможность их просто вставить в блок using
или утилизировать их в том же методе, в котором они созданы.)
Edit
Просто для разъяснения - я поддерживаю только те объекты, которые нужно сохранить. Некоторые из них утилизируются в том же методе, в котором они созданы, но многие из них используются таким образом, что это невозможно.