我有一个有两个重载的方法,如下所示:
bool Evaluate(Func<bool> condition)
{
// Some logic
return condition.Invoke();
}
bool Evaluate<T>(Func<T, bool> condition, T value)
{
// Same logic as the first method overload
return condition.Invoke(value);
}
由于两个方法重载都包含基本相同的逻辑,我希望将它们链接在一起,但我不知道如何做到这一点。我想第一个方法过载需要构造一个它传递给第二个重载的委托(delegate),但不清楚这个委托(delegate)应该采用什么形式。
非常感谢您的建议,
蒂姆
最佳答案
试试这个(你不需要调用 Invoke
):
bool Evaluate(Func<bool> condition) {
// logic ...
return condition();
}
bool Evaluate<T>(Func<T, bool> condition, T value) {
return Evaluate(() => condition(value));
}
或者也许你的逻辑是可重用的,用它自己的方法提取它可能是有意义的:
bool Evaluate(Func<bool> condition) {
Logic();
return condition();
}
bool Evaluate<T>(Func<T, bool> condition, T value) {
Logic();
return condition(value);
}
void Logic() {
// logic...
}
关于c# - 如何链接接受 Func<> 委托(delegate)的方法重载? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3979307/