using Microsoft.Extensions.DependencyInjection;
// 定义一个接口
public interface IMessageService
{
void SendMessage(string message);
}
// 实现接口
public class EmailMessageService : IMessageService
{
public void SendMessage(string message)
{
Console.WriteLine($"Sending email: {message}");
}
}
// 定义一个使用IMessageService的服务
public class NotificationService
{
private readonly IMessageService _messageService;
// 构造函数注入
public NotificationService(IMessageService messageService)
{
_messageService = messageService;
}
public void SendNotification(string message)
{
_messageService.SendMessage(message);
}
}
class Program
{
static void Main(string[] args)
{
// 创建服务容器
var serviceCollection = new ServiceCollection();
// 注册依赖
serviceCollection.AddScoped<IMessageService, EmailMessageService>();
// 构建服务提供者
var serviceProvider = serviceCollection.BuildServiceProvider();
// 解析服务
var notificationService = serviceProvider.GetRequiredService<NotificationService>();
// 使用服务
notificationService.SendNotification("Hello, World!");
}
}
定义接口和实现类:
IMessageService 是一个接口,定义了发送消息的方法。EmailMessageService 是该接口的一个实现,具体实现了发送邮件的功能。构造函数注入:
NotificationService 类通过构造函数注入 IMessageService 依赖。这样可以确保在创建 NotificationService 实例时,依赖项已经准备好。配置依赖注入容器:
ServiceCollection 来注册依赖关系。这里我们将 IMessageService 的实现注册为 EmailMessageService。BuildServiceProvider 方法构建服务提供者。解析并使用服务:
serviceProvider.GetRequiredService<NotificationService>() 来获取 NotificationService 的实例,并调用其方法来发送通知。这种方式使得代码更加模块化、易于测试和维护。
上一篇:delegate c#
下一篇:c# 计时
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站