gpt4 book ai didi

c# - .NET Core 依赖注入(inject)——多个项目

转载 作者:行者123 更新时间:2023-12-05 07:44:45 25 4
gpt4 key购买 nike

我的项目组如下:

1) 共享类库

  • 模特
  • Entity Framework 类(数据库上下文等)

2) 网络 API

  • 使用 (1) 中的模型和 Entity Framework 类与数据库通信。

3) 控制台应用

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

我的问题是:

我是否应该创建一个单独的 DI 容器类,该类具有在控制台应用程序和 Web API 之间共享的 ConfigureServices 方法?

还是让每个应用程序负责绑定(bind)它们自己的依赖项更有意义?

提前致谢!

最佳答案

Ioc 注册

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

就是说,您看到 microsft 使用扩展方法模式一次添加多个依赖项,例如:services.AddMvc() 是一种扩展方法,可以添加 20 个左右的 ioc 注册。您可以在共享库中执行相同的操作。并在您的启动类中简单地添加 services.AddSharedLibrary():

public static class MyServiceExtensions 
{
public static IServiceCollection AddMyLibrary(this IServiceCOllection services)
{
services.Add<Interface1,Implemenetation1>();
services.Add<Interface2,Implemenetation2>();
return services;
}
}

启动基类

您还可以为启动类创建一个(抽象)基类。但这意味着您的共享库现在需要依赖于 HttpBuilder/Kestrel nuget 包。例如,如果您在其中制作服务总线队列监听器,那将很奇怪。

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

关于c# - .NET Core 依赖注入(inject)——多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com