mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-11 20:38:58 +08:00
- 实现 MicrosoftDiContainer 类,提供 Microsoft.Extensions.DependencyInjection 的适配器 - 添加 DefaultCqrsHandlerRegistrar 默认 CQRS 处理器注册器实现 - 配置 GitHub Actions CI/CD 工作流,包含代码质量检查和构建测试任务 - 设置 .NET 8/9/10 多版本支持和缓存策略 - 添加单元测试覆盖 IoC 容器的各项功能,包括注册、解析和生命周期管理 - 实现线程安全的读写锁机制保护容器操作 - 支持 CQRS 处理器和管道行为的注册管理
28 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|