Ich habe Probleme beim Zurückgeben von Null für diesen generischen Typ T. Ich habe versucht, es als Nullable, Nullable oder T? ohne Erfolg ...Returning null T
Diese Methode ist Teil einer abstrakten Klasse und ich muss es so allgemein wie möglich machen, damit ich jede Art von Objekt abrufen und von jeder abgeleiteten Klasse verwenden kann.
public T GetFromApi<T>(string apiRequest, string content)
{
try
{
log.Debug("Requesting '" + apiRequest + "' from API with the following parameters: " + content);
_httpClient.DefaultRequestHeaders.Accept.Clear();
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
_httpClient.DefaultRequestHeaders.Add("Authorization", string.Format("{0} {1}", _token.token_type, _token.access_token));
var httpContent = new StringContent(content);
HttpResponseMessage response = _httpClient.GetAsync(apiRequest).Result;
if (response.IsSuccessStatusCode)
{
//Returns requested Object (T) from API
log.Info("Returning requested object " + typeof(T).ToString());
return response.Content.ReadAsAsync<T>().Result;
}
else
{
log.Error("Error accessing API.");
return null;
}
}
catch (Exception ex)
{
log.Fatal("Error accessing API.", ex);
throw ex;
}
}
Die Rückkehr null auf die else-Anweisung gibt mir den Fehler:
Cannot convert null to type parameter 'T'
Wie wäre es mit 'default (T)'? –
BTW: Sie sollten 'throw;' über 'throw ex;' bevorzugen, um den Stack-Trace der ursprünglichen Exception beizubehalten. –
tnks @UweKeim .. das löst ... – Nuno