组件注册覆盖

时间:2013-05-19 09:04:29

标签: autofac

我们生产的工具包可以被各种IoC容器支持,该工具包完全与IoC无关,我们为不同的容器提供基本支持。 我们目前正在努力支持Autofac,我们需要的是允许最终用户覆盖我们的配置,某些部分是基于约定。

我将解释Windsor会发生什么,以便了解Autofac是否存在类似的机制。

该工具包提供了一组内置服务/组件,这些服务/组件在最终用户容器中“自动”注册。使用Windsor,我们将所有内容注册为“后备”,这样如果用户使用与“默认”相同的服务注册某些内容,则会解析用户组件覆盖我们的注册。

这种方法的有趣之处在于,无论组件的注册顺序如何,它都能正常工作。

使用Autofac实现相同行为的任何方式? .M

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找PreserveExistingDefaults扩展名。您可以在Autofac wiki中了解更多相关信息:https://code.google.com/p/autofac/wiki/ComponentCreation

答案 1 :(得分:-1)

如果完全删除IOC容器会怎样?

您可能需要一个不同的模式。如果您想要一个与容器无关的默认注册,您需要将代码本身视为与容器无关,而不是在容器中注册的回退。

你可以使用穷人的DI。 (虽然,您可能希望在一个地方编排和替换这些默认依赖项,因此下面的内容可能不合适,但工厂可以处理它。)

public SomeConstructor(IService service)
{
    if(service == null)
    {
        service = new DefaultService();
    }
}