Возврат интерфейса из респонса
Я делаю запрос к WebApi и могу получить на выход несколько типов объектов, приведу в пример два (Общего между друг другом они ничего не имеют)
public class UserNotFound : ISignInResponse
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public int D { get; set; }
public string E { get; set; }
public string F { get; set; }
}
либо:
public class SignInResponse : ISignInResponse
{
public string G { get; set; }
public string H { get; set; }
public string I { get; set; }
public string J { get; set; }
}
Для каждого из них я реализовал интерфейс
public interface ISignInResponse
{
}
Метод в сервисе:
public async Task<ISignInResponse> SignIn(SignInModel model)
{
response = ...
}
Запрос происходит в сервисе, как мне вернуть в вьюмодель интерфейс и уже дальше определять что именно пришло. return response.Data не подходит, т.к. интерфейс нельзя десериализовать.
Ответы (1 шт):
Автор решения: veksela
→ Ссылка
Нашел выход как вернуть именно интерфейс:
return response.StatusCode switch {
HttpStatusCode.NotFound => JsonSerializer.Deserialize<UserNotFoundResponse>(response.Content),
HttpStatusCode.OK => JsonSerializer.Deserialize<SignInResponse>(response.Content),
HttpStatusCode.Forbidden => JsonSerializer.Deserialize<SignInFailedResponse>(response.Content)
};