Этот вопрос не обязательно относится к самому ремонту, но начнем. Встроенный ApiResponse от Refit не делает именно то, что мне нужно. Кажется, не существует способа получить доступ к необработанному ответу для его десериализации в сведения о проблеме, которые мой API возвращает в случае сбоя. Я могу изменить сигнатуру моего метода на что-то вроде этого:
Код: Выделить всё
[Multipart]
[Post("/api/importSomething")]
TaskImportSomething(string someID, ByteArrayPart File);
Это дает вам доступ к необработанному ответу. Однако этот тип не является универсальным и делает преобразование в мою реализацию объекта Result очень неприятным для вызывающего клиента. Я хотел бы создать подкласс HttpResponseMessage и сделать его универсальным, чтобы метод интерфейса Refit мог выглядеть следующим образом:
Код: Выделить всё
[Multipart]
[Post("/api/importSomething")]
TaskImportSomething(string someID, ByteArrayPart File);
Нечто подобное было бы идеально, поскольку вызывающему объекту не нужно было бы указывать общий тип метода расширения для преобразования в мой объект Result. Очевидно, что с этим кодом в том виде, в котором он есть, refit выдает исключение, потому что он пытается десериализовать этот тип CustomAPIResponse, и в ответ приходит HttpReponseMessage. Как мне сообщить Refit, что я хочу, чтобы он десериализовал мой пользовательский ответ как суперкласс?
Подробнее здесь:
https://stackoverflow.com/questions/783 ... -supertype