如何链接接受 Func<> 的方法重载代表们? (C#)
我有一个具有两个重载的方法,如下所示:
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);
}
由于两个方法重载包含基本相同的逻辑,因此我希望将它们链接在一起,但我不知道如何执行此操作。我想第一个方法重载需要构造一个委托,并将其传递给第二个重载,但尚不清楚该委托应采用什么形式。
非常感谢您的建议,
蒂姆
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个(您不需要调用
Invoke
):或者也许您的逻辑是可重用的,在它自己的方法中提取它可能是有意义的:
Try this (you don't need to call
Invoke
):Or maybe your logic is reusable, it might make sense to extract it in its own method:
像这样的事情:
Something like this:
最简单的方法是用接受并忽略单个参数的委托包装原始的无参数委托。
The easiest way is to wrap the original no parameter delegate with one that accepts and ignores a single parameter.
除非您要“组成”要传递的值,否则您的第一个重载无法调用第二个重载。不过,你的第二个可以轻松调用第一个。
Your first overload cannot call the second unless you are going to "make up" a value to pass. Your second can easily call the first, though.