public int Status { get; set; }
public string Message { get; set; }
public interface IApiResponse {
public class ApiResponse<T> : ApiResponse, IApiResponse
public T Result { get; set; }
object IApiResponse.Result
public string Text { get; set; }
public static void Main()
object data = new ApiResponse<MyDTO> { Result = new MyDTO { Text = "test" } };
var payload = ((IApiResponse)data).Result;
Console.WriteLine(JsonConvert.SerializeObject(payload));
var serialized = JsonConvert.SerializeObject(data);
var deserialized = (ApiResponse<MyDTO>)JsonConvert.DeserializeObject(serialized, typeof(ApiResponse<MyDTO>));
Console.WriteLine(deserialized.Result.GetType());
Console.WriteLine(JsonConvert.SerializeObject(deserialized.Result));