GFramework/GFramework.Core.Tests/State/StateMachineExtensions.cs
gewuyou ff553977e3 chore(license): 补齐 Apache-2.0 文件头治理
- 新增许可证文件头检查与修复脚本

- 补充维护者手动修复 PR 工作流和 CI 校验

- 更新贡献指南中的文件头说明

- 补齐仓库维护源码和配置文件的许可证声明
2026-05-03 19:39:49 +08:00

28 lines
1.1 KiB
C#

// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
using System.Reflection;
using GFramework.Core.Abstractions.State;
using GFramework.Core.State;
namespace GFramework.Core.Tests.State;
/// <summary>
/// 为状态机测试提供仅限断言场景使用的反射辅助方法。
/// </summary>
public static class StateMachineExtensions
{
/// <summary>
/// 检查状态机内部缓存中是否已注册指定类型的状态。
/// </summary>
/// <typeparam name="T">要检查的状态类型。</typeparam>
/// <param name="stateMachine">待检查的状态机实例。</param>
/// <returns>找到对应状态类型时返回 <see langword="true" />,否则返回 <see langword="false" />。</returns>
public static bool ContainsState<T>(this StateMachine stateMachine) where T : IState
{
return stateMachine.GetType().GetField("States", BindingFlags.NonPublic | BindingFlags.Instance)?
.GetValue(stateMachine) is Dictionary<Type, IState> states &&
states.ContainsKey(typeof(T));
}
}