当有多个项目时,在哪里注册依赖注入?
Where to register dependency injection when have multiple projects?
我应该注册 DI。
private static void Initialize(ContainerBuilder builder)
{
builder.RegisterType<Logger>().As<ILogger>().SingleInstance();
//...
}
这对我来说很清楚。
但是如果我的解决方案中有 17 个项目怎么办?
项目是相关的,一个项目是网络项目,一些项目是提供者,一些项目是图书馆,核心项目等。
例如:
in Project1, I have class_A1 and this class should inject Class_A2 from same project
in Project2, I have class_B1 and this class should inject Class_B2 from same project
in Project3, I have class_C1 and this class should inject Class_C2 from same project
...
in Project17, I have class_K1 and this class should inject Class_K2 from same project
当然我有一些复杂的场景,比如从 Project3 注入 class 到 Project14 等等
我应该在每个项目中单独注册吗?或者有更好的方法?
感谢您的帮助。
如果所有项目都是同一解决方案的一部分,则无需在每个项目中都注册类型。通常在任何解决方案中,您都会有一个主项目,我希望它能使用您解决方案中的所有其他项目,并且您可以在主项目中添加您的注册。
但在某些解决方案中,您可能有主项目未直接引用的项目,如果是这种情况,那么恕我直言,您有两种选择
- 您可以添加其他项目作为对您的主项目的引用
并在您的主项目中注册类型或
- 您可以创建一个新的
项目,比如说,基础设施并添加所有项目作为参考
到基础设施项目并注册类型然后只是
添加基础设施作为对您的主要项目的参考并调用
负责主项目类型注册的方法。
我应该注册 DI。
private static void Initialize(ContainerBuilder builder)
{
builder.RegisterType<Logger>().As<ILogger>().SingleInstance();
//...
}
这对我来说很清楚。
但是如果我的解决方案中有 17 个项目怎么办?
项目是相关的,一个项目是网络项目,一些项目是提供者,一些项目是图书馆,核心项目等。
例如:
in Project1, I have class_A1 and this class should inject Class_A2 from same project
in Project2, I have class_B1 and this class should inject Class_B2 from same project
in Project3, I have class_C1 and this class should inject Class_C2 from same project
...
in Project17, I have class_K1 and this class should inject Class_K2 from same project
当然我有一些复杂的场景,比如从 Project3 注入 class 到 Project14 等等
我应该在每个项目中单独注册吗?或者有更好的方法?
感谢您的帮助。
如果所有项目都是同一解决方案的一部分,则无需在每个项目中都注册类型。通常在任何解决方案中,您都会有一个主项目,我希望它能使用您解决方案中的所有其他项目,并且您可以在主项目中添加您的注册。
但在某些解决方案中,您可能有主项目未直接引用的项目,如果是这种情况,那么恕我直言,您有两种选择
- 您可以添加其他项目作为对您的主项目的引用 并在您的主项目中注册类型或
- 您可以创建一个新的 项目,比如说,基础设施并添加所有项目作为参考 到基础设施项目并注册类型然后只是 添加基础设施作为对您的主要项目的参考并调用 负责主项目类型注册的方法。