public static void Main()
var someObject = new SomeClass<int>(){ Value = 5};
string json = JsonConvert.SerializeObject(someObject);
var readObj = Newtonsoft.Json.Linq.JObject.Parse(json);
var testClass = readObj.ToObject(typeof(SomeClass<int>)) as IDo;
public class SomeClass<T> : IDo
public T Value {get; set;}
public string TypeName {get; private set;}
TypeName = this.GetType().ToString();
Console.WriteLine($"Do somehting with {Value}");