Нет - добавление Dispose()
не очень хорошая идея с Autofac.Правильная утилизация других экземпляров компонентов не гарантируется.
В целом этого следует избегать - например, WCF имеет хорошо известную и давнюю проблему с удобством использования, поскольку соединения выбрасываются во время утилизации.Основным антипаттерном является то, что Dispose()
часто вызывается, потому что распространяется исключение.Бросив еще одно исключение, маскируем исходное
Редактировать:
В качестве мысленного эксперимента - допустим, это было поддержано с помощью некоторой магии try / catch в Autofac.Что произойдет, если OnRelease()
сгенерирует два разных компонента?Мы не можем распространять оба исключения.Далее - когда из Autofac появилось исключение, кто может его поймать?Все компоненты, обслуживающие запрос, теперь освобождены.
Надеюсь, это поможет, Ник.