GFramework/GFramework.Core.Tests/State/ConditionalStateV2.cs
gewuyou f0a36de07c test(core-tests): 批量拆分测试辅助类型以消减警告
- 拆分 GFramework.Core.Tests 中多组测试辅助类型到独立文件以消减 MA0048 warning

- 更新 analyzer-warning-reduction 的 tracking 与 trace 以记录批处理基线和下一恢复点

- 验证 GFramework.Core.Tests Release 构建清零并将仓库根权威 warning 基线压降到 288
2026-04-27 19:44:07 +08:00

65 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using GFramework.Core.Abstractions.State;
namespace GFramework.Core.Tests.State;
/// <summary>
/// 条件状态实现类V2版本支持基于类型的条件转换规则。
/// </summary>
public sealed class ConditionalStateV2 : IState
{
/// <summary>
/// 获取或设置允许转换到的状态类型数组。
/// </summary>
public Type[] AllowedTransitions { get; set; } = Array.Empty<Type>();
/// <summary>
/// 获取进入状态是否被调用的标志。
/// </summary>
public bool EnterCalled { get; private set; }
/// <summary>
/// 获取退出状态是否被调用的标志。
/// </summary>
public bool ExitCalled { get; private set; }
/// <summary>
/// 获取进入此状态的来源状态。
/// </summary>
public IState? EnterFrom { get; private set; }
/// <summary>
/// 获取从此状态退出的目标状态。
/// </summary>
public IState? ExitTo { get; private set; }
/// <summary>
/// 进入当前状态时调用的方法。
/// </summary>
/// <param name="from">从哪个状态进入。</param>
public void OnEnter(IState? from)
{
EnterCalled = true;
EnterFrom = from;
}
/// <summary>
/// 退出当前状态时调用的方法。
/// </summary>
/// <param name="to">退出到哪个状态。</param>
public void OnExit(IState? to)
{
ExitCalled = true;
ExitTo = to;
}
/// <summary>
/// 判断是否可以转换到目标状态。
/// </summary>
/// <param name="target">目标状态。</param>
/// <returns>如果目标状态类型在允许列表中则返回 <see langword="true" />,否则返回 <see langword="false" />。</returns>
public bool CanTransitionTo(IState target)
{
return AllowedTransitions.Contains(target.GetType());
}
}