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; } /// /// 创建无效令牌 /// public static PauseToken Invalid => new(Guid.Empty); public bool Equals(PauseToken other) => Id.Equals(other.Id); public override bool Equals(object? obj) => obj is PauseToken other && Equals(other); public override int GetHashCode() => Id.GetHashCode(); public static bool operator ==(PauseToken left, PauseToken right) => left.Equals(right); public static bool operator !=(PauseToken left, PauseToken right) => !left.Equals(right); public override string ToString() => $"PauseToken({Id})"; }