我正在使用Simple Injector IoC框架,我希望能夠在運行時更改依賴項註冊。例如,我有兩個實現,A
和B
,接口爲I
。實現A
是在應用程序啓動時註冊的,但根據某些可在運行時更改的標誌,我希望切換實現。我們目前正在執行我們的BaseController
的OnActionExecuting
事件,這是我們所有控制器繼承的事件。這是我正在嘗試做的示例代碼。如何使用簡單注入器在運行時更改依賴註冊?
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
if (IsRuntimeFlag)
{
// check current implementation type and
// change implementation to A
}
else
{
// check current implementation type and
// change implementation to B
}
base.OnActionExecuting(filterContext);
}
在此先感謝您的幫助。
我建議結合工廠和戰略模式,而不是使用DI容器爲此。儘早使用Container來解析對象圖。參見[Composition Root](http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx)。 – TrueWill
您是否需要手動執行此操作?使用IOC容器框架怎麼樣? –