IDomainEventDispatcher.cs 898 Bytes
using Rcs.Domain;
using Rcs.Domain.Entities;

namespace Rcs.Application;

/// <summary>
/// 领域事件分发器接口
/// </summary>
public interface IDomainEventDispatcher
{
    /// <summary>
    /// 分发并处理实体的所有领域事件
    /// </summary>
    /// <param name="entity">包含领域事件的实体</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns></returns>
    Task DispatchEventsAsync(Entity entity, CancellationToken cancellationToken = default);

    /// <summary>
    /// 分发单个领域事件
    /// </summary>
    /// <typeparam name="T">领域事件类型</typeparam>
    /// <param name="domainEvent">领域事件</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns></returns>
    Task DispatchAsync<T>(T domainEvent, CancellationToken cancellationToken = default) where T : IDomainEvent;
}