我在ASP.net Core中创建了一个示例项目时使用了四个层,如下所示
我还在我的API项目中的startup.cs中实现了依赖注入。并且它的工作完美。
services.AddTransient<IUserRepository, UserRepository>();
我有两个问题要问。
我的Infrastructure层可以依赖注入,而不是API层吗?如果是的话,你可以指导我如何做吗?
如果我错了,请纠正我。如果Asp.Net Core默认具有依赖注入,那么我们就不需要Autofac(或类似的第三方DI插件)。对?让我重新解释一下这个问题。什么是在Asp Core中使用Autofac?
任何建议都会有所帮助。
谢谢。
答案 0 :(得分:5)
为您的Infrastructure层提供一个Config类,其中包含一个在其签名中需要IServeCollection的Configure方法,如下所示:
public static class InfrastructureConfiguration
{
public static void Configure(IServiceCollection services)
{
}
}
您可以从Startup类中的ConfigureServices方法调用此Configure方法。
在configure方法中,您可以连接所需的内容,例如,您可以使用MyAwesomeInfraClass:
public static class InfrastructureConfiguration
{
public static void Configure(IServiceCollection services)
{
services.AddTransient<MyAwesomeInfraClass>();
}
}
现在您可以将MyAwesomeInfraClass注入您想要的任何位置,例如在控制器中,如下所示:
public class HomeController : Controller
{
private readonly MyAwesomeInfraClass _myAwesomeInfraClass;
public HomeController(MyAwesomeInfraClass myAwesomeInfraClass){
_myAwesomeInfraClass = myAwesomeInfraClass;
}
}