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:
GeWuYou 2026-02-17 18:06:10 +08:00 committed by gewuyou
parent 058dff010c
commit 73d1fcf6fd
8 changed files with 16 additions and 16 deletions

View File

@ -3,7 +3,7 @@
/// <summary>
/// 可销毁接口,为需要资源清理的组件提供标准销毁能力
/// </summary>
public interface IDisposable
public interface IDestroyable
{
/// <summary>
/// 销毁组件并释放资源

View File

@ -3,4 +3,4 @@
/// <summary>
/// 完整生命周期接口,组合了初始化和销毁能力
/// </summary>
public interface ILifecycle : IInitializable, IDisposable;
public interface ILifecycle : IInitializable, IDestroyable;

View File

@ -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--)

View File

@ -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;
}
}
}

View File

@ -5,7 +5,7 @@ namespace GFramework.Core.coroutine.instructions;
/// <summary>
/// 等待多个事件中的任意一个触发的指令
/// 实现了 IDisposable 接口,支持资源释放
/// 实现了 IDestroyable 接口,支持资源释放
/// </summary>
/// <typeparam name="TEvent1">第一个事件类型</typeparam>
/// <typeparam name="TEvent2">第二个事件类型</typeparam>

View File

@ -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>
/// 架构上下文引用,用于访问架构相关的服务和数据

View File

@ -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>
/// 架构上下文引用,用于访问架构相关的服务和数据

View File

@ -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();
}