-1

我来建立新的“企业解决方案”洋葱建筑:工厂实施的地方在哪里?

所以我决定,因为我想尽可能灵活的架构使用“洋葱建筑”。

但我是新来的“依赖解决方案”的关注。

据我所知,我应该把工厂“实施”在这一层,这层有引用所有其他层。

然后,我想知道如何让新实例IFactory的在“UI层”当FactoryImplementation在DependencyResolution层和UI层没有提及“DependencyResolution层”


编辑::

谢谢Erik先生

但之后我看到了许多这些链接时,我想“注册”实现自己的“接口”,因为我不能做这样的事情在UI项目还是有问题的:

kernel.Bind<ITaxCalculator>() 
     .To<TaxCalculator>() 
     .WithConstructorArgument("rate", .2M); 

因为UI项目无法访问TaxCalculator“实施”。

回答

5

我认为最好的解决方案是使用依赖容器(又名IOC容器)来解决你的引用,比如Castle Windsor或Unity,如果你使用.NET。它们使您能够配置依赖解析,而无需引用UI层中的实际实现。

编辑:有些链接:

+0

+1谢谢,但UI项目没有参考实施项目 那么如果我无法在UI项目中实现“实施”,我怎么能做出“解决” –

+0

这是DI容器可以为您解决的问题。例如,您可以在某些DI容器的配置文件(不存在硬引用)中执行此操作。这不会解决你的问题吗? –

+0

我想是的,如果我可以从“配置”文件访问外部库。请告诉我哪个DI容器可以使用,如果可能的话使用示例。 –