Здравствуйте, Passerby, Вы писали:
P>Не могли бы просветить по теории. Объявляется метод:
У меня там вызывается Generic-метод:
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this HttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
Вообще, полный вызов был бы:
client.PostAsJsonAsync<Filter>(@"https://smi2.ru/newdata/jsapi?action=articles", filter)
но т.к. в метод передаётся параметр value, то <TValue> можно опустить и компилятор сам его добавит по типу переменной filter.
Для GetFromJsonAsync нужно уже явно в <> указывать данные какого типа нужно из json десериализовать и тогда он вернёт объект нужного типа
Если использовать вариант метода:
P>P>public static System.Threading.Tasks.Task<object?> GetFromJsonAsync (this System.Net.Http.HttpClient client, string? requestUri, Type type, System.Threading.CancellationToken cancellationToken = default);
P>
то в type указывается ожидаемый тип, а дальше вручную из object к нему привозить нужно. Такое бывает нужно, если тип в режиме выполнения как-то определяется.
Когда на этапе компиляции тип известен, то естественно удобнее и лучше использовать Generic-методы и вызывать что-то типа:
client.GetFromJsonAsync<Article>(url)