Возврат интерфейса из респонса

Я делаю запрос к 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)
            };
→ Ссылка