mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
refactor(core): 将 IDisposable 替换为 IDestroyable 接口
- 重命名 IDisposable 接口为 IDestroyable 并移动到 lifecycle 命名空间 - 更新 Architecture.cs 中的可销毁组件集合类型从 IDisposable 到 IDestroyable - 修改 WaitForEvent 和 WaitForMultipleEvents 类实现 IDestroyable 接口 - 更新 AsyncContextAwareStateBase 和 ContextAwareStateBase 继承 IDestroyable 接口 - 修改 StateMachineSystem 中状态清理逻辑使用 IDestroyable 类型判断 - 更新 ILifecycle 接口继承关系使用新的 IDestroyable 接口
This commit is contained in:
parent
058dff010c
commit
73d1fcf6fd
@ -3,7 +3,7 @@
|
||||
/// <summary>
|
||||
/// 可销毁接口,为需要资源清理的组件提供标准销毁能力
|
||||
/// </summary>
|
||||
public interface IDisposable
|
||||
public interface IDestroyable
|
||||
{
|
||||
/// <summary>
|
||||
/// 销毁组件并释放资源
|
||||
@ -3,4 +3,4 @@
|
||||
/// <summary>
|
||||
/// 完整生命周期接口,组合了初始化和销毁能力
|
||||
/// </summary>
|
||||
public interface ILifecycle : IInitializable, IDisposable;
|
||||
public interface ILifecycle : IInitializable, IDestroyable;
|
||||
@ -11,7 +11,6 @@ using GFramework.Core.environment;
|
||||
using GFramework.Core.extensions;
|
||||
using GFramework.Core.logging;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using IDisposable = GFramework.Core.Abstractions.lifecycle.IDisposable;
|
||||
|
||||
namespace GFramework.Core.architecture;
|
||||
|
||||
@ -117,12 +116,12 @@ public abstract class Architecture(
|
||||
/// <summary>
|
||||
/// 可销毁组件的去重集合
|
||||
/// </summary>
|
||||
private readonly HashSet<IDisposable> _disposableSet = [];
|
||||
private readonly HashSet<IDestroyable> _disposableSet = [];
|
||||
|
||||
/// <summary>
|
||||
/// 存储所有需要销毁的组件(统一管理,保持注册逆序销毁)
|
||||
/// </summary>
|
||||
private readonly List<IDisposable> _disposables = [];
|
||||
private readonly List<IDestroyable> _disposables = [];
|
||||
|
||||
/// <summary>
|
||||
/// 生命周期感知对象列表
|
||||
@ -262,7 +261,7 @@ public abstract class Architecture(
|
||||
}
|
||||
|
||||
// 处理销毁
|
||||
if (component is not IDisposable disposable) return;
|
||||
if (component is not IDestroyable disposable) return;
|
||||
// 原子去重:HashSet.Add 返回 true 表示添加成功(之前不存在)
|
||||
if (_disposableSet.Add(disposable))
|
||||
{
|
||||
@ -377,7 +376,7 @@ public abstract class Architecture(
|
||||
_logger.Info("Starting architecture destruction");
|
||||
EnterPhase(ArchitecturePhase.Destroying);
|
||||
|
||||
// 销毁所有实现了 IDisposable 的组件(按注册逆序销毁)
|
||||
// 销毁所有实现了 IDestroyable 的组件(按注册逆序销毁)
|
||||
_logger.Info($"Destroying {_disposables.Count} disposable components");
|
||||
|
||||
for (var i = _disposables.Count - 1; i >= 0; i--)
|
||||
|
||||
@ -15,9 +15,10 @@ using GFramework.Core.Abstractions.coroutine;
|
||||
using GFramework.Core.Abstractions.events;
|
||||
|
||||
namespace GFramework.Core.coroutine.instructions;
|
||||
|
||||
/// <summary>
|
||||
/// WaitForEvent 类用于等待特定事件的发生,并提供事件数据和完成状态。
|
||||
/// 实现了 IYieldInstruction 和 IDisposable 接口,支持协程等待和资源释放。
|
||||
/// 实现了 IYieldInstruction 和 IDestroyable 接口,支持协程等待和资源释放。
|
||||
/// </summary>
|
||||
/// <typeparam name="TEvent">事件类型</typeparam>
|
||||
public sealed class WaitForEvent<TEvent> : IYieldInstruction, IDisposable
|
||||
@ -83,4 +84,4 @@ public sealed class WaitForEvent<TEvent> : IYieldInstruction, IDisposable
|
||||
EventData = eventData;
|
||||
_done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@ namespace GFramework.Core.coroutine.instructions;
|
||||
|
||||
/// <summary>
|
||||
/// 等待多个事件中的任意一个触发的指令
|
||||
/// 实现了 IDisposable 接口,支持资源释放
|
||||
/// 实现了 IDestroyable 接口,支持资源释放
|
||||
/// </summary>
|
||||
/// <typeparam name="TEvent1">第一个事件类型</typeparam>
|
||||
/// <typeparam name="TEvent2">第二个事件类型</typeparam>
|
||||
|
||||
@ -12,9 +12,9 @@
|
||||
// limitations under the License.
|
||||
|
||||
using GFramework.Core.Abstractions.architecture;
|
||||
using GFramework.Core.Abstractions.lifecycle;
|
||||
using GFramework.Core.Abstractions.rule;
|
||||
using GFramework.Core.Abstractions.state;
|
||||
using IDisposable = GFramework.Core.Abstractions.lifecycle.IDisposable;
|
||||
|
||||
namespace GFramework.Core.state;
|
||||
|
||||
@ -23,7 +23,7 @@ namespace GFramework.Core.state;
|
||||
/// 提供基础的异步状态管理功能和架构上下文访问能力
|
||||
/// 实现了IAsyncState(继承IState)和IContextAware接口
|
||||
/// </summary>
|
||||
public class AsyncContextAwareStateBase : IAsyncState, IContextAware, IDisposable
|
||||
public class AsyncContextAwareStateBase : IAsyncState, IContextAware, IDestroyable
|
||||
{
|
||||
/// <summary>
|
||||
/// 架构上下文引用,用于访问架构相关的服务和数据
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
using GFramework.Core.Abstractions.architecture;
|
||||
using GFramework.Core.Abstractions.lifecycle;
|
||||
using GFramework.Core.Abstractions.rule;
|
||||
using GFramework.Core.Abstractions.state;
|
||||
using IDisposable = GFramework.Core.Abstractions.lifecycle.IDisposable;
|
||||
|
||||
namespace GFramework.Core.state;
|
||||
|
||||
@ -10,7 +10,7 @@ namespace GFramework.Core.state;
|
||||
/// 提供基础的状态管理功能和架构上下文访问能力
|
||||
/// 实现了IState和IContextAware接口
|
||||
/// </summary>
|
||||
public class ContextAwareStateBase : IState, IContextAware, IDisposable
|
||||
public class ContextAwareStateBase : IState, IContextAware, IDestroyable
|
||||
{
|
||||
/// <summary>
|
||||
/// 架构上下文引用,用于访问架构相关的服务和数据
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
using GFramework.Core.Abstractions.architecture;
|
||||
using GFramework.Core.Abstractions.enums;
|
||||
using GFramework.Core.Abstractions.lifecycle;
|
||||
using GFramework.Core.Abstractions.rule;
|
||||
using GFramework.Core.Abstractions.state;
|
||||
using GFramework.Core.extensions;
|
||||
using IDisposable = GFramework.Core.Abstractions.lifecycle.IDisposable;
|
||||
|
||||
namespace GFramework.Core.state;
|
||||
|
||||
@ -74,7 +74,7 @@ public class StateMachineSystem : StateMachine, IStateMachineSystem
|
||||
}
|
||||
|
||||
// 清理所有状态
|
||||
foreach (var state in States.Values.OfType<IDisposable>()) state.Destroy();
|
||||
foreach (var state in States.Values.OfType<IDestroyable>()) state.Destroy();
|
||||
|
||||
States.Clear();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user