SimpleInjector Unbind / Rebind

时间:2013-01-29 14:35:20

标签: c# .net dependency-injection simple-injector

我有一套核心库,这些库已经交付并且“开箱即用”。这意味着服务都在内部连线。我希望能够修改核心库(无需修改库本身)。

话虽如此,SimpleInjector中是否有Unbind / Rebind支持?我没有在容器上看到任何公开可见的方法。我找到了一个私人的注册词典,我可以通过反思来获得。

有没有人看到我无法在运行时使用反射从此私有字典中删除项目(然后重新添加)的原因?有没有我缺少的方法?

1 个答案:

答案 0 :(得分:4)

无法取消注册。但是,覆盖注册是。您必须标记容器以允许此操作:

var container = new Container();

container.Register<IService, FirstService>();

container.Options.AllowOverridingRegistrations = true;

// Replaces the former registration
container.Register<IService, AnotherService>();