using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
[JsonObject(MemberSerialization.OptIn)]
public class Parent : IParent
public int Id { get;set; }
public string Name {get;set;}
public static void Test()
var parent = new Parent() { Id = 1, Name ="Parent"};
var output = JsonConvert.SerializeObject(parent, Formatting.None);
Assert.IsTrue(output == "{\"Id\":1}");
var parentDeserialized = JsonConvert.DeserializeAnonymousType(output, parent);
Assert.IsTrue(parentDeserialized.Id == parent.Id);
Console.WriteLine(output);
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");