问题描述
我需要实现一个接口以在C#中实现策略模式。
第一步是CreateRetryInvocationContext
,第二步是执行。
第二步可以是两种类型),即Func
或Action
。重试操作可能返回一个值或可能返回void。
因此,我已经有两个具体的实现方法(即RetryOperationWithResult
和RetryOperarationWithoutResult
)。两种实现都在实现“ Execute”方法。但是问题是WithResult需要返回,而其他不需要。我该如何说服?我可以通过哪种方式安排接口,以更好地进行编排并减轻客户端的负担。在两端实现了一种平衡且可测试的实现。
这是我建议的类层次结构:
public class RetryOperationWithResult<T> : IRetryProcessor<T>
{
private Func<List<object>,T> _action;
public RetryOperationWithResult(Func<List<object>,T> action)
{
_action = action;
}
public T Execute(RetryOperationContext retryOpContext)
{
T result = default(T);
try
{
//Retry logic
//
}
catch(Exception ex)
{
}
return result;
}
}
class RetryOperationWithOutResult : IRetryProcessor<void>
{
public void Execute(RetryOperationContext retryOpContext)
{
throw new NotImplementedException();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)