Я пойду по маршруту дженериков
Допустим, у нас есть ответ на Класс создание как
public class ClassResponseObject {
public int row_index { get; set; }
public bool success { get; set; }
public string message { get; set; };
}
и для пользователя создания:
public class UserResponseObject {
public int user_id { get; set; }
public bool success { get; set; }
public MessageResponseObject message { get; set; };
}
и для сообщения
public class MessageResponseObject {
public string id { get; set; }
public string message { get; set; };
}
увидев приведенный выше код, мы можем обнаружить, что у нас есть общее свойство успеха в обоих ответах, поэтому давайте создадим базовый класс с этим свойством и наследуем эти классы с этим.
public class BaseResponseObject {
public bool success { get; set; }
}
public class ClassResponseObject : BaseResponseObject {
public int row_index { get; set; }
public string message { get; set; };
}
public class UserResponseObject : BaseResponseObject {
public int user_id { get; set; }
public MessageResponseObject message { get; set; };
}
в этот момент мы видим еще одно общее свойство - message, но оба имеют разные типы. Это можно решить с помощью дженериков. Я рассматриваю, что может быть больше типов для свойства сообщения ответа, но оно должно работать в любом случае.
для этого давайте изменим наш BaseResponseObject и переместим туда свойство сообщения
public class BaseResponseObject<TMessage> {
public bool success { get; set; }
public TMessage message { get; set; }
}
поэтому наши объекты ответа станут примерно такими:
public class ClassResponseObject : BaseResponseObject<String> {
public int row_index { get; set; }
}
public class UserResponseObject : BaseResponseObject<MessageResponseObject> {
public int user_id { get; set; }
}
в качестве последнего шага нам нужно определить последний класс для фактического ответа
public class APIResponse<TResponse> {
public List<TResponse> data { get; set; }
}
теперь, когда вы захватываете ответ для создания Class , вы можете просто захватить его в
APIResponse<ClassResponseObject>
аналогично для User создание, захватить его в
APIResponse<UserResponseObject>
Надеюсь, это поможет.