洋葱建筑:工厂实施的位置?

Wah*_*tar -1 architecture design-patterns dependency-injection onion-architecture

我要建立新的"企业解决方案"

所以我决定使用" 洋葱架构 ",因为我想要灵活的架构.

但我对"依赖性解决方案"的关注是新手.

据我所知,我应该将Factories" Implementations "放在这个Layer中,这个层引用了所有其他层.

然后,当DependencyResolution层和UI层中的FactoryImplementation没有引用"DependencyResolution Layer" 时,我想知道如何在" UI层 " 中创建IFactory的新实例


编辑::

感谢Erik先生

但是当我看到许多这些链接之后,当我想将"注册"实现"注册"到他们的"接口"时,我仍然有问题,因为我在UI项目中不能做这样的事情:

kernel.Bind<ITaxCalculator>()
      .To<TaxCalculator>()
      .WithConstructorArgument("rate", .2M);
Run Code Online (Sandbox Code Playgroud)

因为UI Project无法访问TaxCalculator"实现".

Eri*_*oen 5

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

编辑:一些链接: