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;
}
}