转换 C# Func
在 C# 中,lambda 表达式提供了一种表示轻量级函数的便捷方法。虽然将 lambda 转换为 Expression
挑战
但是,由于编译时错误,这样的直接转换是不可能的,如以下代码所示:
public void ContainTheDanger(Func<T> dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work... Expression<Func<T>> DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer("Danger manifested while " + nameOfDanger, e); } }
错误源于 Func
限制
不幸的是,没有直接的方法来实现所需的转换。尝试从 Func
替代方法
作为替代方案,人们可以考虑:
但是,这些方法通常涉及复杂的并且容易出错
结论
转换 Func
以上是如何将 C# 函数转换为表达式?的详细内容。更多信息请关注PHP中文网其他相关文章!