namespace GFramework.Core.Abstractions.pause; /// /// 暂停令牌,唯一标识一个暂停请求 /// public readonly struct PauseToken : IEquatable { /// /// 令牌 ID /// public Guid Id { get; } /// /// 是否为有效令牌 /// public bool IsValid => Id != Guid.Empty; /// /// 创建暂停令牌 /// /// 令牌 ID,用于唯一标识暂停请求 public PauseToken(Guid id) { Id = id; } /// /// 创建无效令牌 /// /// 返回一个 ID 为 Guid.Empty 的无效暂停令牌 public static PauseToken Invalid => new(Guid.Empty); /// /// 判断当前令牌是否与另一个令牌相等 /// /// 要比较的另一个暂停令牌 /// 如果两个令牌的 ID 相同则返回 true,否则返回 false public bool Equals(PauseToken other) => Id.Equals(other.Id); /// /// 判断当前对象是否为暂停令牌类型并与其相等 /// /// 要比较的对象 /// 如果对象是 PauseToken 类型且 ID 相同则返回 true,否则返回 false public override bool Equals(object? obj) => obj is PauseToken other && Equals(other); /// /// 获取令牌的哈希码 /// /// 基于令牌 ID 计算的哈希值 public override int GetHashCode() => Id.GetHashCode(); /// /// 重载等于运算符,判断两个暂停令牌是否相等 /// /// 左侧暂停令牌 /// 右侧暂停令牌 /// 如果两个令牌相等则返回 true,否则返回 false public static bool operator ==(PauseToken left, PauseToken right) => left.Equals(right); /// /// 重载不等于运算符,判断两个暂停令牌是否不相等 /// /// 左侧暂停令牌 /// 右侧暂停令牌 /// 如果两个令牌不相等则返回 true,否则返回 false public static bool operator !=(PauseToken left, PauseToken right) => !left.Equals(right); /// /// 将暂停令牌转换为字符串表示形式 /// /// 包含令牌 ID 信息的字符串 public override string ToString() => $"PauseToken({Id})"; }