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; using IAsyncQueryBus = GFramework.Core.Abstractions.query.IAsyncQueryBus; namespace GFramework.Core.architecture; /// /// 架构服务类,提供依赖注入容器、事件系统、命令总线和查询总线等核心服务 /// public class ArchitectureServices : IArchitectureServices { /// /// 异步查询总线实例 /// private readonly IAsyncQueryBus _asyncQueryBus; /// /// 命令总线实例 /// private readonly ICommandBus _commandBus; /// /// 事件总线实例 /// private readonly IEventBus _eventBus; /// /// 查询总线实例 /// private readonly IQueryBus _queryBus; private IArchitectureContext _context = null!; /// /// 构造函数,初始化架构服务 /// public ArchitectureServices() { Container = new IocContainer(); // 创建服务实例 _eventBus = new EventBus(); _commandBus = new CommandBus(); _queryBus = new QueryBus(); _asyncQueryBus = new AsyncQueryBus(); // 将服务注册到容器 Container.RegisterPlurality(_eventBus); Container.RegisterPlurality(_commandBus); Container.RegisterPlurality(_queryBus); Container.RegisterPlurality(_asyncQueryBus); } /// /// 获取依赖注入容器 /// public IIocContainer Container { get; } /// /// 获取类型事件系统 /// public IEventBus EventBus => _eventBus; /// /// 获取命令总线 /// public ICommandBus CommandBus => _commandBus; /// /// 获取查询总线 /// public IQueryBus QueryBus => _queryBus; /// /// 获取异步查询总线 /// public IAsyncQueryBus AsyncQueryBus => _asyncQueryBus; /// /// 设置架构上下文 /// /// 架构上下文对象 public void SetContext(IArchitectureContext context) { _context = context; Container.SetContext(context); } /// /// 获取架构上下文 /// /// 架构上下文对象 public IArchitectureContext GetContext() { return _context; } }