Files
2026-10-27 14:35:03 +08:00

41 lines
1.4 KiB
C#

// 摘自 MediatR 14.2.0,许可声明与修改记录见 LICENSE.md 和 UPSTREAM.md。
using System.Threading;
using System.Threading.Tasks;
namespace MAX.Notification;
/// <summary>
/// 定义通知处理器。
/// </summary>
/// <typeparam name="TNotification">要处理的通知类型。</typeparam>
public interface INotificationHandler<in TNotification>
where TNotification : INotification
{
/// <summary>
/// 处理通知。
/// </summary>
/// <param name="notification">要处理的通知。</param>
/// <param name="cancellationToken">取消令牌。</param>
Task Handle(TNotification notification, CancellationToken cancellationToken);
}
/// <summary>
/// 同步通知处理器的基类。
/// </summary>
/// <typeparam name="TNotification">通知类型。</typeparam>
public abstract class NotificationHandler<TNotification> : INotificationHandler<TNotification>
where TNotification : INotification
{
Task INotificationHandler<TNotification>.Handle(TNotification notification, CancellationToken cancellationToken)
{
Handle(notification);
return Task.CompletedTask;
}
/// <summary>
/// 在派生类中重写此方法,实现同步通知处理逻辑。
/// </summary>
/// <param name="notification">要处理的通知。</param>
protected abstract void Handle(TNotification notification);
}