猿问

需要用c# 实现一个需求,任意方法调用失败,都会重复再调用2次。

比如有一个 Person 类,现在里面有1个Add 方法,如果出现异常,进入catch  然后  再次调用Add 方法  计数器减一次,如果计数器小于0 ,那么就抛出异常,否则继续调用Add 方法。

现在 新增了很多方法,比如有 Delete,Update ,Putch, 等等,都需要支持调用失败,重复尝试调用,所以代码需要重构,总不能每个方法里面都写try catch 然后重复那种相同的逻辑,希望有大神能实现这个重构。


白猪掌柜的
浏览 1074回答 2
2回答

犯罪嫌疑人X

之前做过一个.正经的解决方案是ioc容器加接口方法拦截你到百度搜  ioc 方法拦截 .net 

qq_花开花谢_0

Add方法应该没有副作用。重复几次应该是调用者该干的事可以写个方法Try<T>(Func<T>&nbsp;fun,int&nbsp;count){&nbsp;&nbsp;&nbsp;&nbsp;while(true){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fun(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count--;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(count&nbsp;<&nbsp;0)&nbsp;throw&nbsp;e; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }调用的时候var&nbsp;result&nbsp;=&nbsp;Try(()=>{return&nbsp;&nbsp;Add();},1&nbsp;&nbsp;);
随时随地看视频慕课网APP
我要回答