1 回答

TA貢獻1797條經驗 獲得超6個贊
鑒于您在編譯時知道什么時候知道 snake_case 以及什么時候需要默認策略,您可以這樣做:
private Task<object> PostAsync<T1, T2>(string uri, T2 content)
{
return PostAsync<T1, T2>(uri, content, new DefaultNamingStrategy());
}
private async Task<object> PostAsync<T1, T2>(string uri, T2 content, NamingStragy namingStrategy)
{
using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, uri))
{
var json = JsonConvert.SerializeObject(content);
using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json"))
{
requestMessage.Content = stringContent;
HttpResponseMessage response = await _client.SendAsync(requestMessage);
if (response.IsSuccessStatusCode)
{
_logger.LogInformation("Request Succeeded");
var deserializerSettings = new JsonSerializerSettings
{
ContractResolver = new DefaultContractResolver
{
NamingStrategy = namingStrategy
}
};
T1 responseModel = JsonConvert.DeserializeObject<T1>(await response.Content.ReadAsStringAsync(), deserializerSettings);
return responseModel;
}
else
{
return await GetFailureResponseModel(response);
}
}
}
}
所以,當你需要默認策略時:
await PostAsync<Some1, Some2>(uri, some2Content);
并且,當你需要 snake_case 時:
await PostAsync<Some1, Some2>(uri, some2Content, new SnakeCaseNamingStrategy());
- 1 回答
- 0 關注
- 104 瀏覽
添加回答
舉報