我正在爲第三方應用程序構建插件,我的插件使用Autofac來連接各種組件。容器是在應用程序啓動時構建的,但主機應用程序在稍後調用我的命令。組件可以臨時註冊到Autofac容器中嗎?
當一個命令被調用時,主機應用程序提供了它定義的類型的幾個實例,並且我的組件需要使用。我想在容器中註冊這些實例,以便它可以負責連接依賴於這些實例的組件。
我知道我可以使用ContainerBuilder來更新現有的容器,但是我想在命令完成時刪除這些註冊,因爲這些實例將不再有效。這可能嗎?
也許更好的方法是使用2個容器...該命令可以創建一個新容器來註冊這些實例,並且其他組件可以從應用程序作用域容器中解析。
我該如何連接2個容器,以便解析調用會冒泡到應用程序範圍的容器?
有沒有什麼值得注意的方法?我想有可能是部件壽命的問題...
編輯:現在我已經做了些研究和測試,它原來我可以只使用BeginLifetimeScope(動作<ContainerBuilder>)超載登記主機應用程序僅提供嵌套生命週期的實例。出於某種原因,我認爲向嵌套生命週期添加註冊會導致它們被添加到根容器中,但似乎並非如此。
是的,在這種情況下,LifetimeScope正是您想要的。請發佈問題的答案並將其標記爲已接受,以便稍後找到此問題的人也可以獲得答案。 –
謝謝,我早些時候發佈了我的答案,但是因爲我沒有足夠的聲望點,所以我只好等了8個小時...... –
Yay!我現在可以發佈我的答案,但直到明天才能接受...... –