Ejemplo n.º 1
0
    /// <summary>
    /// Writes the enum.
    /// </summary>
    /// <param name="writer">The writer.</param>
    /// <param name="enumValue">The enum value.</param>
    public void WriteEnum(TextWriter writer, object enumValue)
    {
        if (enumValue == null)
        {
            return;
        }
        var serializedValue = CachedTypeInfo.Get(enumValue.GetType()).EnumInfo.GetSerializedValue(enumValue);

        if (serializedValue is string strEnum)
        {
            WriteRawString(writer, strEnum);
        }
        else
        {
            JsWriter.WriteEnumFlags(writer, enumValue);
        }
    }
Ejemplo n.º 2
0
        public static object TryParseEnum(Type enumType, string str)
        {
            if (str == null)
            {
                return(null);
            }

            if (JsConfig.TextCase == TextCase.SnakeCase)
            {
                string[] names = Enum.GetNames(enumType);
                if (Array.IndexOf(names, str) == -1)    // case sensitive ... could use Linq Contains() extension with StringComparer.InvariantCultureIgnoreCase instead for a slight penalty
                {
                    str = str.Replace("_", "");
                }
            }

            var enumInfo = CachedTypeInfo.Get(enumType).EnumInfo;

            return(enumInfo.Parse(str));
        }