微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何实现依赖于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 举报,一经查实,本站将立刻删除。