Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在控制器构造函数中传递接口或类以进行依赖项注入_C#_Asp.net Mvc_Dependency Injection_Autofac - Fatal编程技术网

C# 在控制器构造函数中传递接口或类以进行依赖项注入

C# 在控制器构造函数中传递接口或类以进行依赖项注入,c#,asp.net-mvc,dependency-injection,autofac,C#,Asp.net Mvc,Dependency Injection,Autofac,我的控制器看起来像贝娄。但我不知道何时在构造函数中传递接口和类。还是这真的很重要?我搜索,但没有得到答案 public class MyController { private readonly IMyService _myService; public MyController(IMyService myService) { _myService=myService; } } 或 public class MyC

我的控制器看起来像贝娄。但我不知道何时在构造函数中传递接口和类。还是这真的很重要?我搜索,但没有得到答案

public class MyController
    {
      private readonly IMyService _myService;
      public MyController(IMyService myService)
      {
        _myService=myService;
      }
    }

public class MyController
    {
      private readonly IMyService _myService;
      public MyController(MyService myService)
      {
        _myService=myService;
      }
    }
而我的依赖注射就像

    builder.RegisterType<MyService>().As<IMyService>().InstancePerLifetimeScope();
builder.RegisterType();
更好,因为它允许您以不同的方式实现IMyService,而无需接触MyController


更好,因为它允许您以不同的方式实现IMyService,而无需接触MyController。

您始终需要在构造函数中传递接口(您的第一个实现)。若您将在构造函数中传递类,那个么依赖项注入并没有任何好处,因为您已经告诉了构造函数哪个类正在实现这个接口和这个代码行

 builder.RegisterType<MyService>().As<IMyService>().InstancePerLifetimeScope();
builder.RegisterType();
依赖注入是用来在运行时而不是编译时绑定接口及其实现的东西


PS:始终使用您的第一个实现。因为它是一个宽泛的概念,所以我无法在这里解释所有内容(尝试在web上搜索)

您始终需要在构造函数中传递接口(您的第一个实现)。若您将在构造函数中传递类,那个么依赖项注入并没有任何好处,因为您已经告诉了构造函数哪个类正在实现这个接口和这个代码行

 builder.RegisterType<MyService>().As<IMyService>().InstancePerLifetimeScope();
builder.RegisterType();
依赖注入是用来在运行时而不是编译时绑定接口及其实现的东西

PS:始终使用您的第一个实现。因为它是一个宽泛的概念,所以我无法在这里解释所有内容(尝试在web上搜索)