我想创建一个类,让我调用指定的timout方法。我有实际的超时实现工作,但无法成功地将其封装到类中。在C#中创建一个可重用的方法超时类
我在这个时候决定限制自己只处理5个Action委托,对需要0-4个参数的方法施加超时。为了这个问题的目的,我将使用Action的一个参数变体。
我的理想调用语法将是这样的:
Action<int> a = new TimeoutAction(i => i + 1)
{
Timeout = Timespan.FromSeconds(10)
}
或本:
Action<int> a = (x => x + 1).Timeout(Timespan.FromSeconds(10))
我几乎可以肯定的是,第一个版本心不是可能的,因为没有办法从一个继承代表。第二种可能是在Delegate
类型上使用扩展方法。
最后的回退是创建一个静态方法,它接受相应的委托类型并返回一个具有相同签名但包含超时的委托。
任何意见或建议?