Refit — десериализация ответа на супертип.C#

Место общения программистов C#
Ответить
Anonymous
 Refit — десериализация ответа на супертип.

Сообщение Anonymous »

Этот вопрос не обязательно относится к самому ремонту, но начнем. Встроенный 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»