依赖注入(DI)的三种常见方法
- 构造函数注入:这是最常用的注入方式,它通过类的构造函数传递依赖对象。
- 方法注入:依赖对象通过类的方法传递,而不是在构造时。
- 属性注入:依赖对象直接设置到类的属性上。这种方式不是所有DI容器都支持,但一些容器如Autofac支持。
下面是一个简单的代码示例来说明这些概念:
// 构造函数注入
public class ServiceA
{
private readonly IServiceB _serviceB;
public ServiceA(IServiceB serviceB)
{
_serviceB = serviceB;
}
}
// 方法注入
public class ServiceC
{
private IServiceD _serviceD;
public void Initialize(IServiceD serviceD)
{
_serviceD = serviceD;
}
}
// 属性注入(示例使用Autofac支持的属性注入)
public class ServiceE
{
public IServiceF ServiceF { get; set; }
}
在这些示例中:
ServiceA
类通过构造函数接收IServiceB
的实例。ServiceC
类通过Initialize
方法接收IServiceD
的实例。ServiceE
类有一个公开的ServiceF
属性,可以被Autofac等支持属性注入的DI容器设置。