namespace SerializationTest
public delegate void MyClassCallback(object sender, EventArgs arg);
[JsonObject(MemberSerialization.Fields)]
private class ClassWithSerializedEvent
public event MyClassCallback HasChanged;
public ClassWithSerializedEvent()
this.name = this.GetType().Name;
[JsonObject(MemberSerialization.Fields)]
private class ClassWithoutSerializedEvent
private MyClassCallback hasChanged;
public event MyClassCallback HasChanged
public ClassWithoutSerializedEvent()
this.name = this.GetType().Name;
public void OnHasChanged(object sender, EventArgs args)
Console.WriteLine("Reacting to " + sender);
static void Main(string[] args)
MyListener listener = new MyListener();
ClassWithSerializedEvent instanceWithSerializedEvent = new ClassWithSerializedEvent();
ClassWithoutSerializedEvent instanceWithoutSerializedEvent = new ClassWithoutSerializedEvent();
instanceWithSerializedEvent.HasChanged += listener.OnHasChanged;
instanceWithoutSerializedEvent.HasChanged += listener.OnHasChanged;
Console.WriteLine("Instance with serialized event:");
Console.WriteLine(JsonConvert.SerializeObject(instanceWithSerializedEvent, Formatting.Indented));
Console.WriteLine("Instance without serialized event");
Console.WriteLine(JsonConvert.SerializeObject(instanceWithoutSerializedEvent, Formatting.Indented));
Console.Write("Press any key to exit!");