using System.Collections.Generic;
public static void Main()
var nonValueObject = new ApiResponseNonValue()
Messages = new List<string>
"I am a non type api response."
var valueObject = new ApiResponseWithValue<int>()
Messages = new List<string>
"I am a value type api response."
WriteLine(nonValueObject);
public static void WriteLine<T>(T value)
if (value is IApiResponse response)
Console.WriteLine(string.Join(',', response.Messages));
public class ApiResponseNonValue
public List<string> Messages { get; set; }
public List<string> Errors { get; set; }
public class ApiResponseWithValue<T>
public List<string> Messages { get; set; }
public List<string> Errors { get; set; }
public T Data { get; set; }
public interface IApiResponse
public List<string> Messages { get; set; }
public List<string> Errors { get; set; }
public interface IApiResponse<T>
public T Data { get; set; }