I know this sounds crazy but, you can use Newtonsoft JSON.NET to convert your object into a serialized string and then cast from that string into any other type.
var jsontemp = JsonConvert.SerializeObject(anyObject);
var ConvertedObject = JsonConvert.DeserializeObject(jsontemp, desiredType);