asp.net core 2.0 DI将多个IInterface类注入控制器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net core 2.0 DI将多个IInterface类注入控制器相关的知识,希望对你有一定的参考价值。

我要创建数百个类。如果他们都实现了同一个类,我是否必须逐个注册?

public class Service<TEntity>: IService<TEntity> {...}

public Interface IService<TEntity> where TEntity : class {...}

public class class1 : Service<apple>, IClass1 {...}

public class class234 : Service<orange>, IClass234 {...}

在我的控制器中,我想像这样注入它

public class FoodController : Controller{
     private IClass1 _class1;
     private IClass234 _class234;

     FoodController(IClass1 ic1, IClass234 ic234){
          _class1 = ic1;
          _class234 = ic234;
     }
}

我之前用Unity在旧版本的ASP.NET中做过这个我怎么能用ASP.NET CORE 2.0的内置DI做到这一点?

在控制器中,我可以在构造函数中注入IClass1IClass234的特定接口。这是我想要实现的,因为我还想使用类实现的其他接口中的其他方法。

public void ConfigureServices(IServiceCollection services)
{
    // Is there a way to register all 234 classes without typing out services.addTransient...
}
答案

使用标准DI容器,您必须逐个注册。

但您可以使用另一个库通过命名约定自动注册它:

https://www.google.com/amp/s/andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/amp/

以上是关于asp.net core 2.0 DI将多个IInterface类注入控制器的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2 - 多个 Azure Redis 缓存服务 DI

如何在 ASP.NET Core 2.0 中设置多个身份验证方案?

跟着老桂学ASP.NET Core 2.0

ASP.Net Core 2.0:无需请求即可创建 UrlHelper

Asp.NET Core 一个接口的多个实现如何通过 DI 注册?

如何在 Asp.Net Core 2.0“AddJwtBearer”中间件中设置多个受众?