GFramework/GFramework.Core/Cqrs/Internal/DefaultCqrsHandlerRegistrar.cs
GeWuYou 34e140e919 feat(ioc): 添加 Microsoft DI 容器适配器和 CI/CD 工作流
- 实现 MicrosoftDiContainer 类,提供 Microsoft.Extensions.DependencyInjection 的适配器
- 添加 DefaultCqrsHandlerRegistrar 默认 CQRS 处理器注册器实现
- 配置 GitHub Actions CI/CD 工作流,包含代码质量检查和构建测试任务
- 设置 .NET 8/9/10 多版本支持和缓存策略
- 添加单元测试覆盖 IoC 容器的各项功能,包括注册、解析和生命周期管理
- 实现线程安全的读写锁机制保护容器操作
- 支持 CQRS 处理器和管道行为的注册管理
2026-04-15 15:13:43 +08:00

28 lines
1.2 KiB
C#

using System.Reflection;
using GFramework.Core.Abstractions.Cqrs;
using GFramework.Core.Abstractions.Ioc;
using GFramework.Core.Abstractions.Logging;
namespace GFramework.Core.Cqrs.Internal;
/// <summary>
/// 默认的 CQRS 处理器注册器实现。
/// 该适配器把容器公开的 handler 接入入口转发到现有的注册流水线,
/// 使容器主路径只依赖 <see cref="ICqrsHandlerRegistrar" /> 抽象。
/// </summary>
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));
/// <summary>
/// 按当前 runtime 约定扫描并注册处理器程序集。
/// </summary>
/// <param name="assemblies">要接入的程序集集合。</param>
public void RegisterHandlers(IEnumerable<Assembly> assemblies)
{
ArgumentNullException.ThrowIfNull(assemblies);
CqrsHandlerRegistrar.RegisterHandlers(_container, assemblies, _logger);
}
}