using System.Collections.Generic;
using Newtonsoft.Json.Converters;
public static void Main()
var obj = new SomeClass{InterfaceMember = "xyz", X = 3 };
string serializedData = JsonConvert.SerializeObject(obj);
dynamic t = JsonConvert.DeserializeObject<SomeClass2>(serializedData);
Console.WriteLine("X: " + X);
public class SomeClass: ISomeInterface
public int X { get; set; }
public string InterfaceMember { get; set; }
public interface ISomeInterface
string InterfaceMember { get; set; }
public class SomeClass2 : DynamicObject, ISomeInterface
private Dictionary<string, object> dictionary = new Dictionary<string, object>();
public string InterfaceMember {get;set;}
public override bool TryGetMember(GetMemberBinder binder, out object result)
return dictionary.TryGetValue(binder.Name, out result);
public override bool TrySetMember(SetMemberBinder binder, object value)
dictionary[binder.Name] = value;