Недостаточно просто иметь список параметров, так как вам нужно знать имена параметров.
RestSharp поддерживает добавление параметров запроса без указания их в URL-адресе запроса, для использования URL-адресов нужны только имена параметров в {} параметры сегмента. Если вы примете это значение по умолчанию, вы можете делать то, что вы хотите.
public static T Get<T>(string endpoint, params KeyValuePair[] parameters) where T : new()
{
var request = new RestRequest(endpoint);
foreach (var parameter in parameters)
{
if (endpoint.Contains($"{{{parameter.Key}}}")
request.AddUrlSegmentParameter(parameter.Key, parameter.Value);
else
request.AddQueryStringParameter(parameter.Key, parameter.Value);
}
var response = client.Get<T>(request);
return response.Data;
}
Поэтому, когда вы звоните
Get<Blah>(
"/something/{id}",
new KeyValuePair("id", "123"),
new KeyValuePair("sort", "asc")
);
Он отправит ваш запрос на http://baseurl/something/123?sort=asc