我有一段代码在一个适度复杂的重试和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