Модуль AutoFac не утилизируется - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть модуль автозапуска, который реализует IDisposable.Модуль регистрируется с помощью метода containerBuilder.RegisterModule <> и он разрешается во время container.Build.Но: Dispose не вызывается на модуле, когда контейнер утилизируется.Это ошибка, или я что-то пропустил?

Я воспроизвел это с помощью Autofac 4.6.2 и 4.8.1, другие версии не проверял.

1 Ответ

0 голосов
/ 29 ноября 2018

Модули не предназначены для утилизации.Связь между Autofac и одноразовыми компонентами осуществляется реализациями ILifetimeScope.

Модуль - это в основном блок с методом Load, который выполняется один раз.

Когда метод Load завершается,Вы должны покончить с модулем.

Таким образом, если у вас есть какой-либо ресурс, который нужно сохранить в живых и утилизировать впоследствии, его следует сохранить в живых (и утилизировать) в одном из вариантов управления жизненным циклом .

Итак, вы можете сказать, что это ошибка, но я лично считаю, что это всего лишь случай с функцией, которая не нужна для предполагаемого использования модулей (эта последняя фраза - только мое личное мнение).

Если вы хотите описать (может быть, в другом вопросе?), Что является актуальной проблемой, которую вы пытаетесь решить с помощью одноразового модуля, мы можем обсудить это.

...