using System.Collections.Generic;
public static void Main()
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
var nameMessage = new MessageWrapper<Name>();
nameMessage.Message = new Name {First="Bob", Last = "Smith"};
string serialized = JsonConvert.SerializeObject(nameMessage);
var deserialized = JsonConvert.DeserializeObject<MessageWrapper>(serialized);
var messageType = Type.GetType(deserialized.MessageType);
Name message = JsonConvert.DeserializeObject(Convert.ToString(deserialized.Message), messageType);
Console.WriteLine(serialized);
Console.WriteLine(message.First);
public class MessageWrapper<T>
public string MessageType { get { return typeof(T).FullName; } }
public T Message { get; set; }
public class MessageWrapper
public string MessageType { get; set; }
public object Message { get; set; }