using System; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace Shuttle.Api.PhotoshopDTO { public class TargaBitsPerPixelsConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { TargaBitsPerPixels bpp = (TargaBitsPerPixels) value; switch (bpp) { case TargaBitsPerPixels.SIXTEEN: writer.WriteValue("TargaBitsPerPixels.SIXTEEN"); break; case TargaBitsPerPixels.THIRTYTWO: writer.WriteValue("TargaBitsPerPixels.THIRTYTWO"); break; case TargaBitsPerPixels.TWENTYFOUR: writer.WriteValue("TargaBitsPerPixels.TWENTYFOUR"); break; default: throw new ArgumentOutOfRangeException(); } } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var enumString = (string) reader.Value; return Enum.Parse(typeof(TargaBitsPerPixels), enumString, true); } public override bool CanConvert(Type objectType) { return objectType == typeof(string); } } public enum TargaBitsPerPixels { SIXTEEN, THIRTYTWO, TWENTYFOUR } public struct TargaSaveOptionsDTO { [JsonProperty("alphaChannels")] public bool AlphaChannels { get; set; } [JsonProperty("resolution")] [JsonConverter(typeof(TargaBitsPerPixelsConverter))] public TargaBitsPerPixels Resolution { get; set; } [JsonProperty("rleCompression")] public bool RleCompression { get; set; } } }