using System.Common; // ReSharper disable once CheckNamespace namespace System { public static class GuidExtensions { /// /// 返回 结构的此实例值的字符串表示形式(格式N) /// /// /// public static string ToStringN(this Guid guid) => guid.ToString(Constants.N); /// /// 返回 结构的此实例值的字符串表示形式(格式N) /// /// /// public static string? ToStringN(this Guid? guid) => guid.HasValue ? guid.Value.ToStringN() : null; static bool TryParseGuid_Format_D(string? input, out Guid result) => Guid.TryParse(input, out result); static bool TryParseGuid_Format_N(string? input, out Guid result) => Guid.TryParseExact(input, Constants.N, out result); static bool TryParseGuid(string? input, out Guid result, bool isFormatNFirst) { if (isFormatNFirst) { if (TryParseGuid_Format_N(input, out result)) { return true; } else if (TryParseGuid_Format_D(input, out result)) { return true; } return false; } else { if (TryParseGuid_Format_D(input, out result)) { return true; } else if (TryParseGuid_Format_N(input, out result)) { return true; } return false; } } /// /// 将包含 表示形式的指定只读字符范围转换为等效的 Guid 结构 /// 优先尝试使用格式D /// /// /// /// public static bool TryParseGuid(this string? input, out Guid result) => TryParseGuid(input, out result, false); /// /// 将包含 表示形式的指定只读字符范围转换为等效的 Guid 结构 /// 优先尝试使用格式D /// /// /// public static Guid? TryParseGuid(this string? input) => TryParseGuid(input, out var result) ? result : default; /// /// 将包含 表示形式的指定只读字符范围转换为等效的 Guid 结构 /// 优先尝试使用格式N /// /// /// /// public static bool TryParseGuidN(this string? input, out Guid result) => TryParseGuid(input, out result, true); /// /// 将包含 表示形式的指定只读字符范围转换为等效的 Guid 结构 /// 优先尝试使用格式N /// /// /// public static Guid? TryParseGuidN(this string? input) => TryParseGuidN(input, out var result) ? result : default; } }