diff --git a/GFramework.Core/architecture/ArchitectureContext.cs b/GFramework.Core/architecture/ArchitectureContext.cs
index 744d371..a9776ec 100644
--- a/GFramework.Core/architecture/ArchitectureContext.cs
+++ b/GFramework.Core/architecture/ArchitectureContext.cs
@@ -13,33 +13,43 @@ namespace GFramework.Core.architecture;
///
/// 架构上下文类,提供对系统、模型、工具等组件的访问以及命令、查询、事件的执行管理
///
-public class ArchitectureContext : IArchitectureContext
+public class ArchitectureContext(IIocContainer container) : IArchitectureContext
{
- private readonly IIocContainer _container;
+ private readonly IIocContainer _container = container ?? throw new ArgumentNullException(nameof(container));
private readonly Dictionary _serviceCache = new();
- public ArchitectureContext(IIocContainer container)
- {
- _container = container ?? throw new ArgumentNullException(nameof(container));
- }
-
+ ///
+ /// 获取指定类型的服务实例,如果缓存中存在则直接返回,否则从容器中获取并缓存
+ ///
+ /// 服务类型,必须为引用类型
+ /// 服务实例,如果未找到则返回null
public TService? GetService() where TService : class
{
return GetOrCache();
}
+ ///
+ /// 从缓存中获取或创建指定类型的服务实例
+ /// 首先尝试从缓存中获取服务实例,如果缓存中不存在则从容器中获取并存入缓存
+ ///
+ /// 服务类型,必须为引用类型
+ /// 服务实例,如果未找到则返回null
private TService? GetOrCache() where TService : class
{
+ // 尝试从服务缓存中获取已存在的服务实例
if (_serviceCache.TryGetValue(typeof(TService), out var cached))
return (TService)cached;
+ // 从依赖注入容器中获取服务实例
var service = _container.Get();
+ // 如果服务实例存在,则将其存入缓存以供后续使用
if (service != null)
_serviceCache[typeof(TService)] = service;
return service;
}
+
#region Query Execution
///