// 摘自 MediatR 14.2.0,许可声明与修改记录见 LICENSE.md 和 UPSTREAM.md。
using System.Threading;
using System.Threading.Tasks;
namespace MAX.Notification;
///
/// 发布通知或事件,交由多个处理器处理。
///
public interface IPublisher
{
///
/// 异步向多个处理器分发通知。
///
/// 通知对象。
/// 可选的取消令牌。
/// 表示本次通知发布操作的任务。
Task Publish(object notification, CancellationToken cancellationToken = default);
///
/// 异步向多个处理器分发通知。
///
/// 通知对象。
/// 可选的取消令牌。
/// 表示本次通知发布操作的任务。
Task Publish(TNotification notification, CancellationToken cancellationToken = default)
where TNotification : INotification;
}