diff --git a/GFramework.Core.Abstractions/architecture/IArchitecture.cs b/GFramework.Core.Abstractions/architecture/IArchitecture.cs index 487d323..332c6fc 100644 --- a/GFramework.Core.Abstractions/architecture/IArchitecture.cs +++ b/GFramework.Core.Abstractions/architecture/IArchitecture.cs @@ -36,21 +36,21 @@ public interface IArchitecture : IAsyncInitializable /// /// 系统类型,必须实现ISystem接口 /// 要注册的系统实例 - void RegisterSystem(T system) where T : ISystem; + T RegisterSystem(T system) where T : ISystem; /// /// 注册模型实例到架构中 /// /// 模型类型,必须实现IModel接口 /// 要注册的模型实例 - void RegisterModel(T model) where T : IModel; + T RegisterModel(T model) where T : IModel; /// /// 注册工具实例到架构中 /// /// 工具类型,必须实现IUtility接口 /// 要注册的工具实例 - void RegisterUtility(T utility) where T : IUtility; + T RegisterUtility(T utility) where T : IUtility; /// /// 安装架构模块 diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index 2470ff5..a451f87 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -425,9 +425,10 @@ public abstract class Architecture( /// 注册一个系统到架构中。 /// 若当前未初始化,则暂存至待初始化列表;否则立即初始化该系统。 /// - /// 要注册的系统类型 + /// 要注册的系统类型,必须实现ISystem接口 /// 要注册的系统实例 - public void RegisterSystem(TSystem system) where TSystem : ISystem + /// 注册成功的系统实例 + public TSystem RegisterSystem(TSystem system) where TSystem : ISystem { ValidateRegistration("system"); @@ -440,15 +441,17 @@ public abstract class Architecture( RegisterLifecycleComponent(system); _logger.Info($"System registered: {typeof(TSystem).Name}"); + return system; } /// /// 注册一个模型到架构中。 /// 若当前未初始化,则暂存至待初始化列表;否则立即初始化该模型。 /// - /// 要注册的模型类型 + /// 要注册的模型类型,必须实现IModel接口 /// 要注册的模型实例 - public void RegisterModel(TModel model) where TModel : IModel + /// 注册成功的模型实例 + public TModel RegisterModel(TModel model) where TModel : IModel { ValidateRegistration("model"); @@ -461,18 +464,20 @@ public abstract class Architecture( RegisterLifecycleComponent(model); _logger.Info($"Model registered: {typeof(TModel).Name}"); + return model; } /// - /// 注册一个工具到架构中。 - /// 工具不会被延迟初始化,直接放入IOC容器供后续使用。 + /// 注册一个工具到架构中 /// - /// 要注册的工具类型 + /// 要注册的工具类型,必须实现IUtility接口 /// 要注册的工具实例 - public void RegisterUtility(TUtility utility) where TUtility : IUtility + /// 注册成功的工具实例 + public TUtility RegisterUtility(TUtility utility) where TUtility : IUtility { _logger.Debug($"Registering utility: {typeof(TUtility).Name}"); + // 处理上下文工具类型的设置和生命周期管理 utility.IfType(contextUtility => { contextUtility.SetContext(Context); @@ -482,6 +487,7 @@ public abstract class Architecture( Container.RegisterPlurality(utility); _logger.Info($"Utility registered: {typeof(TUtility).Name}"); + return utility; } #endregion