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;
- }
-
///
/// 处理架构阶段事件的虚拟方法
///