Esempio n. 1
0
        private static object GetEnumFromExistingJToken(Type enumType, JToken existingValue, EnumInfo enumInfo)
        {
            switch (existingValue.Type)
            {
            case JTokenType.Integer:
                if (enumInfo.IsSigned)
                {
                    return(GetEnumFromExistingInteger(enumType, existingValue.ToObject <long>(), enumInfo));
                }
                else
                {
                    return(GetEnumFromExistingInteger(enumType, existingValue.ToObject <ulong>(), enumInfo));
                }

            case JTokenType.String:
                return(GetEnumFromExistingString(enumType, existingValue.ToObject <string>()));

            case JTokenType.Array:
                return(GetEnumFromExistingStrings(enumType, existingValue.ToObject <string[]>(), enumInfo));

            default:
                throw new InvalidOperationException(
                          $"Cannot construct enum type {enumType} from JToken type: {existingValue.Type}.");
            }
        }
Esempio n. 2
0
 private static object GetEnumFromExistingInteger(Type enumType, object existingValue, EnumInfo enumInfo)
 {
     if (enumInfo.IsSigned)
     {
         return(Enum.ToObject(enumType, Convert.ToInt64(existingValue)));
     }
     else
     {
         return(Enum.ToObject(enumType, Convert.ToUInt64(existingValue)));
     }
 }