using GFramework.Core.Abstractions.architecture; using GFramework.Core.Abstractions.command; using GFramework.Core.Abstractions.events; using GFramework.Core.Abstractions.ioc; using GFramework.Core.Abstractions.query; using GFramework.Core.command; using GFramework.Core.events; using GFramework.Core.ioc; using GFramework.Core.query; namespace GFramework.Core.architecture; /// /// 架构服务类,提供依赖注入容器、事件系统、命令总线和查询总线等核心服务 /// public class ArchitectureServices : IArchitectureServices { /// /// 异步查询执行器实例 /// private readonly IAsyncQueryExecutor _asyncQueryExecutor; /// /// 命令执行器实例 /// private readonly ICommandExecutor _commandExecutor; /// /// 事件总线实例 /// private readonly IEventBus _eventBus; /// /// 同步查询执行器实例 /// private readonly IQueryExecutor _queryExecutor; /// /// 架构上下文对象 /// private IArchitectureContext _context = null!; /// /// 构造函数,初始化架构服务 /// 初始化依赖注入容器,并创建事件总线、命令执行器、查询执行器和异步查询执行器的实例, /// 然后将这些服务注册到容器中。 /// public ArchitectureServices() { Container = new MicrosoftDiContainer(); // 创建服务实例 _eventBus = new EventBus(); _commandExecutor = new CommandExecutor(); _queryExecutor = new QueryExecutor(); _asyncQueryExecutor = new AsyncQueryExecutor(); // 将服务注册到容器 Container.RegisterPlurality(_eventBus); Container.RegisterPlurality(_commandExecutor); Container.RegisterPlurality(_queryExecutor); Container.RegisterPlurality(_asyncQueryExecutor); } /// /// 获取依赖注入容器 /// public IIocContainer Container { get; } /// /// 获取事件总线实例 /// public IEventBus EventBus => _eventBus; /// /// 获取命令执行器实例 /// public ICommandExecutor CommandExecutor => _commandExecutor; /// /// 获取同步查询执行器实例 /// public IQueryExecutor QueryExecutor => _queryExecutor; /// /// 获取异步查询执行器实例 /// public IAsyncQueryExecutor AsyncQueryExecutor => _asyncQueryExecutor; /// /// 设置架构上下文 /// /// 架构上下文对象 public void SetContext(IArchitectureContext context) { _context = context; Container.SetContext(context); } /// /// 获取架构上下文 /// /// 架构上下文对象 public IArchitectureContext GetContext() { return _context; } }