Jeer
@Jeer
уверенный пользователь

Как вернуть string из дженерика c#?

Добрый день,
Написал класс-обёртку для http вызово с динамичным типом:
public async Task<T> PostPandaSpecified<T>(string pandaParams, string method)
{
            // вырезал http вызов
                var content = await response.Content.ReadAsStringAsync();
                if (response.IsSuccessStatusCode)
                {
                    if (typeof(T) == typeof(string))
                    {
                        return content; // ошибка
                    }
                    else
                    {
                        var res = JsonConvert.DeserializeObject<T>(content);
                        return res;
                    }
                }

                throw new HttpRequestException(content);
            
}


Соответственно, если я вызываю этот метод и передаю в возвращаемый тип какой-либо класс, то этот класс подставляется в json десериализацию и всё отрабатывает
var res = await PostPandaSpecified<SomeResultClass>(dataToSend, "url");

Но если же мне приходит в ответ не json, а простая строка, я не должен её передавать в json сериализатор, он от этого ломается, мне просто нужно вернуть контент.
var res = await PostPandaSpecified<string>(dataToSend, "url");

// Ошибка в этом блоке
if (typeof(T) == typeof(string))
{
    return content; // Cannot implicity convert type 'string' to 'T'
}

(явные преобразования так же не работают)

Как тут правильно написать?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
Jeer
@Jeer Автор вопроса
уверенный пользователь
Какой же я молодец, гуглится быстрее, чем писал вопрос:
if (typeof(T) == typeof(string))
{
    return (T)(object)content;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы