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上搜索)