using System.Collections.Generic;
using Newtonsoft.Json.Serialization;
public static void Main()
Widget w = new Widget(2) { Name = "Thingamajig" };
JsonSerializerSettings settings = new JsonSerializerSettings
ContractResolver = new WritablePropertiesOnlyResolver()
string json = JsonConvert.SerializeObject(w, settings);
public string Type { get; } = nameof(Widget);
public string Name { get; set; }
public string LowerCaseName
get { return (Name != null ? Name.ToLower() : null); }
public string BackwardName => Name != null ? new string(Name.ToCharArray().Reverse().ToArray()) : null;
class WritablePropertiesOnlyResolver : DefaultContractResolver
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
IList<JsonProperty> props = base.CreateProperties(type, memberSerialization);
return props.Where(p => p.Writable).ToList();