保持.NET依赖注入的顺序

时间:2018-11-23 17:22:16

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

最近,我开始使用.NET Core 2.1进行新项目,我决定使用SOLID原理并创建一个不错的项目结构。

这是一个Web API项目。一切工作正常,我使用了大量的依赖注入,大多数内容都很容易测试。

那是我必须注册所有服务的部分。我的字面上有几百行,像这样:

services.AddSingleton<...>();

services.AddScoped<...>();

对于每项服务,我都有一条线路,对于一个小型项目,那会很好。但是,当我有成百上千的东西时,它就变得一团糟。基本上,整个项目的顺序都非常好,并且出现了充满了services.AddX语句的Startup.cs。

我当时想用注册服务的方法创建静态类,但是看起来并不好。

将来我将需要添加更多服务,而我不能只是继续创建静态类或填充旧类,因为我将再次陷入同样的​​混乱,这将使我更难记住我在哪里注册给定的服务。

2 个答案:

答案 0 :(得分:1)

如果确实有数百个,则可能要用例如Autofac替换默认容器。这些类型的框架支持模块或某种“子容器”。

  

模块是一小类,可用于将一组相关组件捆绑在“外墙”后面,以简化配置和部署。

Replace DI Autofac modules

答案 1 :(得分:1)

您可以让每个逻辑服务组(分别)导出其自己的RegisterServices方法。该组件的责任是无论如何都要选择生存期和范围。

对于化妆品,在AddMyStuff()名称空间中使其成为Microsoft.Extensions.DependencyInjection扩展方法。

有关示例,请参见AddMvc()。查找它( F12 ),注意程序集及其所在的名称空间之间的区别。