我们生产的工具包可以被各种IoC容器支持,该工具包完全与IoC无关,我们为不同的容器提供基本支持。 我们目前正在努力支持Autofac,我们需要的是允许最终用户覆盖我们的配置,某些部分是基于约定。
我将解释Windsor会发生什么,以便了解Autofac是否存在类似的机制。
该工具包提供了一组内置服务/组件,这些服务/组件在最终用户容器中“自动”注册。使用Windsor,我们将所有内容注册为“后备”,这样如果用户使用与“默认”相同的服务注册某些内容,则会解析用户组件覆盖我们的注册。
这种方法的有趣之处在于,无论组件的注册顺序如何,它都能正常工作。
使用Autofac实现相同行为的任何方式? .M
答案 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();
}
}