我想创建一些接受 Func 参数的重载方法。重载方法应该调用参数中定义的最通用类型的方法。下面是我的方法的一个简单示例,以及我如何调用它们:
public static TResult PerformCaching<TResult, T1>(Func<T1, TResult> func, T1 first, string cacheKey)
{
return PerformCaching((t, _, _) => func, first, null, null, cacheKey);
}
public static TResult PerformCaching<TResult, T1, T2>(Func<T1, T2, TResult> func, T1 first, T2 second, string cacheKey)
{
return PerformCaching((t, t2, _) => func, first, second, null, cacheKey);
}
public static TResult PerformCaching<TResult, T1, T2, T3>(Func<T1, T2, T3, TResult> func, T1 first, T2 second, T3 third, string cacheKey)
{
Model data = Get(cacheKey);
if(data == null)
{
Add(cacheKey);
data = func.Invoke(first, second, third);
Update(data);
}
return data;
}
有可能让它像这样工作吗?另一个问题是当 func 到达最终方法时发生了什么。它会使用一个参数执行它(当调用第一个方法时)还是使用所有三个参数调用它。