我有一段代碼在一個適度複雜的重試和try/catch邏輯中執行「文件放置」操作。這工作正常,它看起來大致如下:如何包裝一個函數及其參數...排序「超級代表」?
while (...) {
try {
FilePut(source, destination)
}
catch() {
//Check exception type, possibly re-throw, possibly return, possibly increment
//counters being checked by while loop
}
}
這個邏輯的細節不是問題。但是我意識到我還有一些其他操作也需要在這種相同的邏輯內執行,我想避免在應用程序周圍複製和粘貼這些邏輯。我想將它移動到一個函數並重用該函數。該函數必須對要調用的操作採取某種引用,並且try邏輯將執行該操作(文件放置,文件獲取,等等)。
這似乎是一個委託的好地方,但問題是,這些操作中的每一個都有不同的簽名,所以我不確定如何能夠編寫我的上述邏輯以便能夠調用「任何「操作。
有沒有在C#中做到這一點的好方法?
這將如何滿足的事實,每個操作都有不同的簽名? – desigeek 2012-07-23 20:05:19
@desigeek DoAction(()=> FilePut(source,dest)); DoAction(()=> bla-bla1(x)); DoAction(()=> bla-bla3(x1,x2,x3)); – 2012-07-23 20:09:22
簽名差異隱藏在「動作」委託中。 「行動」代表都具有相同的簽名。 – 2012-07-23 20:09:51