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