1
汎用メソッドSendHttpRequest<TRequest, TResponse>
は、汎用タイプの入力として要求タイプと応答タイプを取ります。 response-typeは、ブール値または応答を表すクラスのいずれかです。boolean戻り型の汎用メソッドからbooleanを返します
私の仕事は、を返します。この方法ではHTTPリクエストが成功し、TResponse
はbool
です。代わりにTResponse
のタイプが異なる場合は、応答内容をTResponse
オブジェクトにシリアル化して解除する必要があります。 true
を返すと、コンパイル時エラーが発生します。 boolean型とnon-boolean型の両方をサポートする単一のメソッドを持つ方法はありますか?
private async Task<TResponse> SendHttpRequest<TRequest, TResponse>(TRequest request)
{
using (var client = new HttpClient())
{
client.BaseAddress = "http://example.com/";
var response = await client.PostAsJsonAsync("api_path", request).ConfigureAwait(false);
if (!response.IsSuccessStatusCode)
{
throw new MyException(response);
}
if (typeof (TResponse) == typeof (bool))
{
return true; // Generates compile-time error
}
else
{
var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
return JsonConvert.DeserializeObject<TResponse>(content);
}
}
}
*「ブールおよび非ブールの両方をサポートしています戻り値の型 "* ='オブジェクト '。 – Sinatr