У меня есть следующий статус c Класс расширения:
public static class HttpRequestExtensions
{
private static string TimeoutPropertyKey = "RequestTimeout";
public static void SetTimeout(
this HttpRequestMessage request,
TimeSpan? timeout)
{
if ( request == null )
throw new ArgumentNullException (nameof (request));
request.Properties[TimeoutPropertyKey] = timeout;
}
public static TimeSpan? GetTimeout(this HttpRequestMessage request)
{
if ( request == null )
throw new ArgumentNullException (nameof (request));
if ( request.Properties.TryGetValue (
TimeoutPropertyKey,
out var value)
&& value is TimeSpan timeout )
return timeout;
return null;
}
}
К сожалению, из-за разных сред я не могу использовать out var value
(C# версии et c et c) и я вынужден изменить его, так же как value is TimeSpan timeout
(не могу изменить параметры в IDE, C# версия и т. Д. c, хотя это совершенно хороший код).
У меня есть придумайте следующее
public static TimeSpan? GetTimeout(this HttpRequestMessage request)
{
object value;
TimeSpan ts = new TimeSpan();
if ( request == null )
throw new ArgumentNullException (nameof (request));
if ( request.Properties.TryGetValue (
TimeoutPropertyKey,
out value)
&& value.GetType () == typeof (Timeout) )
ts = TimeSpan.Parse (value.ToString());
return ts;
}
Может кто-нибудь посоветовать мне, если это правильно, а если нет, предложить альтернативу? Большое спасибо ..