依赖注入(Dependency Injection,DI)是一种实现控制反转(Inversion of Control,IoC)的技术,它允许我们将依赖关系从代码中抽象出来,使组件更易于测试和维护。在C# .NET中,依赖注入可以通过多种方式实现,如构造函数注入、属性注入和方法注入。
以下是依赖注入在C# .NET中的基本工作原理:
IServiceCollection
的Add
方法将实现类添加到容器中。以下是一个简单的示例,演示了如何在C# .NET中使用依赖注入:
// 定义接口
public interface IMessageService
{
string GetMessage();
}
// 实现接口
public class EmailService : IMessageService
{
public string GetMessage()
{
return "Hello from EmailService!";
}
}
// 使用依赖注入的类
public class NotificationController
{
private readonly IMessageService _messageService;
// 通过构造函数注入依赖项
public NotificationController(IMessageService messageService)
{
_messageService = messageService;
}
public void SendNotification()
{
string message = _messageService.GetMessage();
Console.WriteLine(message);
}
}
// 应用程序启动类
public class Program
{
public static void Main(string[] args)
{
// 创建服务容器
var services = new ServiceCollection();
// 注册依赖项
services.AddTransient<IMessageService, EmailService>();
// 创建服务容器实例
var serviceProvider = services.BuildServiceProvider();
// 使用依赖注入的类
var notificationController = serviceProvider.GetService<NotificationController>();
notificationController.SendNotification();
}
}
在上面的示例中,我们定义了一个IMessageService
接口和一个实现该接口的EmailService
类。然后,我们创建了一个NotificationController
类,它通过构造函数注入IMessageService
依赖项。在Main
方法中,我们使用ServiceCollection
注册依赖项,并使用BuildServiceProvider
方法创建服务容器实例。最后,我们使用GetService
方法获取NotificationController
实例,并调用其SendNotification
方法。