如何实现依赖于Action和Func的接口?当Func返回时,动作执行不返回任何内容

问题描述

我需要实现一个接口以在C#中实现策略模式。

第一步是CreateRetryInvocationContext,第二步是执行。

第二步可以是两种类型),即FuncAction。重试操作可能返回一个值或可能返回void。

因此,我已经有两个具体的实现方法(即RetryOperationWithResultRetryOperarationWithoutResult)。两种实现都在实现“ 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;
    }
}

,另一个用于Action实现。当然,以下内容不会被编译。

class RetryOperationWithOutResult : IRetryProcessor<void>
{
     public void Execute(RetryOperationContext retryOpContext)
     {
         throw new NotImplementedException();
     }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)