设计思路
- 定义事件:首先定义一个用户注册成功的事件,包含用户相关信息。
- 定义事件处理程序:创建一个处理该事件的类,用于发送欢迎消息。
- 使用MediatR:利用MediatR框架来实现事件的发布和处理。注册MediatR相关服务,以便在用户注册成功时能够调用处理程序发送欢迎消息。
关键代码示例
- 定义事件
public class UserRegisteredEvent
{
public string UserName { get; set; }
public string Email { get; set; }
public UserRegisteredEvent(string userName, string email)
{
UserName = userName;
Email = email;
}
}
- 定义事件处理程序
using MediatR;
using System.Threading;
using System.Threading.Tasks;
public class UserRegisteredEventHandler : INotificationHandler<UserRegisteredEvent>
{
public async Task Handle(UserRegisteredEvent notification, CancellationToken cancellationToken)
{
// 发送欢迎消息逻辑,这里简单模拟
await Task.Run(() =>
{
System.Console.WriteLine($"欢迎 {notification.UserName},您的邮箱是 {notification.Email}");
});
}
}
- 注册MediatR服务
在
Startup.cs
中的 ConfigureServices
方法里:
using MediatR;
using System.Reflection;
public void ConfigureServices(IServiceCollection services)
{
// 注册MediatR
services.AddMediatR(Assembly.GetExecutingAssembly());
}
- 触发事件
在用户注册成功的逻辑中:
using MediatR;
using System.Threading.Tasks;
public class UserRegistrationService
{
private readonly IMediator _mediator;
public UserRegistrationService(IMediator mediator)
{
_mediator = mediator;
}
public async Task RegisterUser(string userName, string email)
{
// 假设这里完成用户注册逻辑
// 发布用户注册成功事件
await _mediator.Publish(new UserRegisteredEvent(userName, email));
}
}