.NET核心依赖注入 - 多个项目

时间:2017-03-03 05:56:44

标签: c# entity-framework dependency-injection asp.net-core

我的项目组如下:

1)共享类库

  • 模型
  • 实体框架类(DB上下文等)

2)Web API

  • 使用(1)中的模型和实体框架类与数据库进行通信。

3)控制台应用

  • 在(1)中创建模型的实例,并使用那里的实体框架类将它们保存到数据库中。

我的问题是:

我是否应该创建一个具有在Control Application和Web API之间共享的ConfigureServices方法的DI Container类?

或者让每个应用程序负责绑定自己的依赖项更有意义吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Ioc注册

这取决于应用程序的性质,但总的来说,我会说你想将它拆分并在任一应用程序中使用它。两个应用程序中相同的东西不需要抽象和ioc注册(不要使抽象的东西不需要抽象)。

那就是说,你看到microsft使用扩展方法模式一次添加多个demendencies像:.gitconfig是一个扩展方法,可以添加20个左右的ioc注册。您可以在共享库中执行相同操作。只需在启动类中添加services.AddMvc()

services.AddSharedLibrary()

启动基类

您还可以为Startup Class创建一个(抽象)基类。但这意味着您的共享库现在需要依赖于HttpBuilder / Kestrel nuget包。例如,如果您在制作Servicebus队列侦听器的位置,那将会很奇怪。

为Startup创建基类的一个很好的理由是:如果您希望所有启动项目具有相同的方式和顺序来构建Appsettings和/或您希望它们使用相同的Appsettings作为IOptions的配置。但在这种情况下,我建议为此创建一个单独的共享库,专门用于提供相同的StartupBase和配置。