using System.Reflection;
using GFramework.Core.Abstractions.Ioc;
using GFramework.Core.Abstractions.Logging;
using GFramework.Cqrs.Abstractions.Cqrs;
namespace GFramework.Cqrs.Internal;
///
/// 默认的 CQRS 处理器注册器实现。
/// 该适配器把容器公开的 handler 接入入口转发到现有的注册流水线,
/// 使容器主路径只依赖 抽象。
///
internal sealed class DefaultCqrsHandlerRegistrar(IIocContainer container, ILogger logger) : ICqrsHandlerRegistrar
{
private readonly IIocContainer _container = container ?? throw new ArgumentNullException(nameof(container));
private readonly ILogger _logger = logger ?? throw new ArgumentNullException(nameof(logger));
///
/// 按当前 runtime 约定扫描并注册处理器程序集。
///
/// 要接入的程序集集合。
public void RegisterHandlers(IEnumerable assemblies)
{
ArgumentNullException.ThrowIfNull(assemblies);
CqrsHandlerRegistrar.RegisterHandlers(_container, assemblies, _logger);
}
}