public virtual void Write(Enum value) { string enumName = null; Type type = value.GetType(); if (type.IsDefined(typeof(FlagsAttribute), true) && !Enum.IsDefined(type, value)) { Enum[] flags = JsonWriter.GetFlagList(type, value); string[] flagNames = new string[flags.Length]; for (int i = 0; i < flags.Length; i++) { flagNames[i] = JsonNameAttribute.GetJsonName(flags[i]); if (String.IsNullOrEmpty(flagNames[i])) { flagNames[i] = flags[i].ToString("f"); } } enumName = String.Join(", ", flagNames); } else { enumName = JsonNameAttribute.GetJsonName(value); if (String.IsNullOrEmpty(enumName)) { enumName = value.ToString("f"); } } this.Write(enumName); }