From 029f3a46520ae43c7a198f7c1e379dd1404641d9 Mon Sep 17 00:00:00 2001 From: GwWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Sat, 3 Jan 2026 22:10:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(model):=20=E4=BC=98=E5=8C=96=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E6=9E=B6=E6=9E=84=E4=B8=8A=E4=B8=8B=E6=96=87=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除通过反射调用SetArchitecture方法的方式 - 改为直接调用model.SetContext(Context)方法 - 将AbstractModel基类继承ContextAwareBase - 删除手动实现的SetContext和GetContext方法 - 简化模型注册流程,提高代码可读性 --- GFramework.Core/architecture/Architecture.cs | 4 +--- GFramework.Core/model/AbstractModel.cs | 21 +++----------------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index dda7ad9..85a57ed 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -424,9 +424,7 @@ public abstract class Architecture( } _logger.Debug($"Registering model: {typeof(TModel).Name}"); - // 对于有 SetArchitecture 方法的模型,尝试调用该方法 - var setArchitectureMethod = typeof(TModel).GetMethod("SetArchitecture", [typeof(IArchitecture)]); - setArchitectureMethod?.Invoke(model, [this]); + model.SetContext(Context); Container.RegisterPlurality(model); if (!_mInitialized) diff --git a/GFramework.Core/model/AbstractModel.cs b/GFramework.Core/model/AbstractModel.cs index aae101c..5d67067 100644 --- a/GFramework.Core/model/AbstractModel.cs +++ b/GFramework.Core/model/AbstractModel.cs @@ -1,19 +1,14 @@ -using GFramework.Core.Abstractions.architecture; -using GFramework.Core.Abstractions.enums; +using GFramework.Core.Abstractions.enums; using GFramework.Core.Abstractions.model; +using GFramework.Core.rule; namespace GFramework.Core.model; /// /// 抽象模型基类,实现IModel接口,提供模型的基本架构支持 /// -public abstract class AbstractModel : IModel +public abstract class AbstractModel : ContextAwareBase, IModel { - /// - /// 模型所属的架构实例 - /// - protected IArchitectureContext _context { get; private set; } = null!; - /// /// 初始化模型,调用抽象方法OnInit执行具体初始化逻辑 /// @@ -22,16 +17,6 @@ public abstract class AbstractModel : IModel OnInit(); } - public void SetContext(IArchitectureContext context) - { - _context = context; - } - - public IArchitectureContext GetContext() - { - return _context; - } - /// /// 处理架构阶段事件的虚拟方法 ///