【发布时间】:2020-02-13 15:33:48
【问题描述】:
我有以下静态扩展类:
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#版本等),我不得不改变它,和value is TimeSpan timeout一样(不能在IDE中改变参数,C#版本etcetc,尽管这是非常好的代码)。
我想出了下面的
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;
}
如果这正确,有人可以告诉我,如果不是,建议一个替代方案?非常感谢。。
【问题讨论】:
-
value.GetType () == typeof (Timeout)看起来不正确,也许是value.GetType () == typeof (TimeSpan)?或使用is运算符 -
真正有问题的部分是
TimeSpan.Parse (value.ToString())...
标签: c# timeout httprequest timespan