有多个项目时在哪里注册依赖注入?

时间:2015-05-12 08:29:20

标签: c# dependency-injection solid-principles

我应该注册DI。

    private static void Initialize(ContainerBuilder builder)
    {
        builder.RegisterType<Logger>().As<ILogger>().SingleInstance();
        //...
    }

这对我来说很清楚。 但是如果我的解决方案中有17个项目怎么办? 项目是相关的,一个项目是web项目,一些项目是提供者,一些项目是图书馆,核心项目等。 例如:

  在Project1中,我有class_A1,这个类应该从同一个项目中注入Class_A2   在Project2中,我有class_B1,这个类应该从同一个项目中注入Class_B2   在Project3中,我有class_C1,这个类应该从同一个项目中注入Class_C2   ...
  在Project17中,我有class_K1,这个类应该从同一个项目中注入Class_K2

当然我有一些复杂的场景,比如从Project3到Project14等的注入类 我应该分别在每个项目中注册吗?还是有更好的方法?
谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果所有项目都是同一解决方案的一部分,那么您不需要在每个项目中注册类型。通常在任何解决方案中,您将拥有一个主项目,我希望您可以使用解决方案中的所有其他项目,并且可以在主项目中添加注册。

但在某些解决方案中,您可能有不直接由主项目引用的项目,如果是这种情况,那么您有两个选项恕我直言

  1. 您可以添加其他项目作为主项目的参考     并在主项目中注册类型或
  2. 您可以创建一个新的         项目,比如基础设施,并添加所有项目作为参考         到基础设施项目并注册类型然后只是         添加基础架构作为对主项目的引用并调用         从主项目处理类型登记的方法。