我想創建一個類,讓我調用指定的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
類型上使用擴展方法。
最後的回退是創建一個靜態方法,它接受相應的委託類型並返回一個具有相同簽名但包含超時的委託。
任何意見或建議?