Я создаю плагин для стороннего приложения, и мой плагин использует Autofac для подключения различных компонентов. Контейнер создается при запуске приложения, но хост-приложение вызывает мои команды позднее.
Когда команда вызывается, хост-приложение предоставляет несколько экземпляров типов, которые оно определяет и которые мои компоненты должны будут использовать. Я хотел бы зарегистрировать эти экземпляры в контейнере, чтобы он мог позаботиться о подключении компонентов, которые зависят от этих экземпляров.
Мне известно, что я могу использовать ContainerBuilder для обновления существующего контейнера, но я хотел бы удалить эти регистрации после завершения команды, так как эти экземпляры больше не будут действительными. Возможно ли это?
Возможно, лучшим подходом является использование 2-х контейнеров ... Команда может создать новый контейнер для регистрации этих экземпляров, а другие компоненты могут быть разрешены из контейнера области приложения.
Как я могу соединить 2 контейнера, чтобы разрешить вызовы до контейнера области приложения?
Есть ли какие-либо ошибки, о которых следует знать при таком подходе? Я предполагаю, что могут быть проблемы с временем жизни компонента ...
Редактировать: Теперь я провел немного больше исследований и испытаний, и оказалось, что я могу просто использовать перегрузку BeginLifetimeScope (Action ) для регистрации предоставленных экземпляров приложения-хоста для вложенного только на всю жизнь. По какой-то причине я подумал, что добавление регистраций к вложенному времени жизни приведет к их добавлению в корневой контейнер, но, похоже, это не так.