在簡單噴油器中是否有任何方法可以在運行時將一種類型的默認值替換爲結構圖中的containter.Inject()
?我借用code用結構圖如下簡單噴油器:在運行時替換註冊類型
var container = new Container(x => { x.For<IFoo>().Use<AFoo>(); });
container.GetInstance<IFoo>().ShouldBeOfType<AFoo>();
container.Configure(x => x.For<IFoo>().Use<BFoo>());
// The default of IFoo is now different
container.GetInstance<IFoo>().ShouldBeOfType<BFoo>();
// or use the Inject method that's just syntactical
// sugar for replacing the default of one type at a time
container.Inject<IFoo>(new CFoo());
container.GetInstance<IFoo>().ShouldBeOfType<CFoo>();
我的背景下
註冊容器
// bypass verify was removed for short
_container.Register<HttpContextBase>(() => new HttpContextWrapper(HttpContext.Current));
_container.Register(() => _container.GetInstance<HttpContextBase>().User.Identity);
我的服務
public class MyService : IMyService
{
public MyService(IIdentity identity)
{
//...
}
//...
}
沒有與我的應用程序沒有問題。有效。但在我的單元測試(真正的本地數據庫沒有模擬),我想用登錄用戶替換IIdentity。我用結構圖,它的工作。現在我不知道如何使它適用於Simple Injector。
爲什麼你想在運行時替換一個實例? – Steven
OP我想你還讀過代碼段下面的段落? 「首先,關於此功能的最佳建議是*不要在根容器*上的測試場景之外使用它。」 – trashr0x
@Steven我用當前的上下文更新了我的問題 – Martinez