556 : struct
557 {
558 if (!typeof(TEnum).IsEnum)
559 {
561 }
563 if (
value.Length == 0)
564 {
565 if (throwOnFailure)
566 {
568 }
569 result = default(TEnum);
570 return false;
571 }
572 RuntimeType enumType = (RuntimeType)typeof(TEnum);
573 int result3;
574 uint result6;
575 switch (
Type.GetTypeCode(typeof(TEnum)))
576 {
577 case TypeCode.SByte:
578 {
579 bool flag =
TryParseInt32Enum(enumType,
value, -128, 127, ignoreCase, throwOnFailure, TypeCode.SByte, out result3);
580 sbyte source2 = (sbyte)result3;
581 result =
Unsafe.As<sbyte, TEnum>(ref source2);
582 return flag;
583 }
584 case TypeCode.Int16:
585 {
586 bool flag =
TryParseInt32Enum(enumType,
value, -32768, 32767, ignoreCase, throwOnFailure, TypeCode.Int16, out result3);
589 return flag;
590 }
591 case TypeCode.Int32:
592 {
594 result =
Unsafe.As<int, TEnum>(ref result3);
595 return flag;
596 }
597 case TypeCode.Byte:
598 {
600 byte source4 = (byte)result6;
601 result =
Unsafe.As<byte, TEnum>(ref source4);
602 return flag;
603 }
604 case TypeCode.UInt16:
605 {
606 bool flag =
TryParseUInt32Enum(enumType,
value, 65535u, ignoreCase, throwOnFailure, TypeCode.UInt16, out result6);
607 ushort source3 = (ushort)result6;
608 result =
Unsafe.As<ushort, TEnum>(ref source3);
609 return flag;
610 }
611 case TypeCode.UInt32:
612 {
613 bool flag =
TryParseUInt32Enum(enumType,
value, uint.MaxValue, ignoreCase, throwOnFailure, TypeCode.UInt32, out result6);
614 result =
Unsafe.As<uint, TEnum>(ref result6);
615 return flag;
616 }
617 case TypeCode.Int64:
618 {
619 long result5;
621 result =
Unsafe.As<long, TEnum>(ref result5);
622 return flag;
623 }
624 case TypeCode.UInt64:
625 {
626 ulong result4;
628 result =
Unsafe.As<ulong, TEnum>(ref result4);
629 return flag;
630 }
631 default:
632 {
633 object result2;
635 result = (flag ? ((TEnum)result2) : default(TEnum));
636 return flag;
637 }
638 }
639 }
static bool TryParseUInt64Enum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, out ulong result)
static bool TryParseRareEnum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, [NotNullWhen(true)] out object result)
static bool TryParseInt64Enum(RuntimeType enumType, ReadOnlySpan< char > value, bool ignoreCase, bool throwOnFailure, out long result)
static bool TryParseInt32Enum(RuntimeType enumType, ReadOnlySpan< char > value, int minInclusive, int maxInclusive, bool ignoreCase, bool throwOnFailure, TypeCode type, out int result)
static bool TryParseUInt32Enum(RuntimeType enumType, ReadOnlySpan< char > value, uint maxInclusive, bool ignoreCase, bool throwOnFailure, TypeCode type, out uint result)