0
最近,我创建了新的类,假设要包装我想要使用的每个方法,并在失败时重试使用。“无法解决方法 - 候选人” - 编译错误
为了使此功能可用于各种方法从一个参数到五个或更多,我创建了一些方法重载。
试图在某些情况下使用此方法给了我编译错误: “无法解析方法 - 候选人是” ,我想获得一些关于如何处理它的建议。
所以,这里是两种方法的一个例子:
public static TResult Do<T, TResult>(Func<T, TResult> action, T param,
RetryIntervals retryInterval, int retryIntervalMultiplier = 0, int retryCount = 3)
public static TResult Do<T, T2, TResult>(Func<T, T2, TResult> action, T param, T2 param2,
RetryIntervals retryInterval , int retryIntervalMultiplier = 0, int retryCount = 3)
如果我使用这个新功能是这样的:
RetryProcess.Do(CacheManager.ExecuteSet, key, value,RetryProcess.RetryIntervals.TenMilliSeconds);
我得到我上面提到的错误。
唯一的解决方案,我想过到现在为止是:
- 使用所有的无默认参数(不喜欢它,因为我需要的默认参数,以使代码更清洁)每次调用的参数。
- 每个“Do”方法将有不同的名称取决于它有多少个参数(也感觉它不是一个好的解决方案,并错过了过载的想法)。
您对我有其他想法吗?
通常,最好不要将重载方法与默认参数混合使用。相反,如果你正在重载,添加更多的没有参数的重载,然后让他们用那个默认值调用相关的方法。我不知道这是你的问题,只是我发现的东西 –
如何定义CacheManager.ExecuteSet? – poke
public static bool ExecuteSet(string key,object value,ExpirationTimeEnum expirationTime = ExpirationTimeEnum.Never) – FelProNet