【发布时间】:2013-05-01 23:50:43
【问题描述】:
我有一个辅助方法,它获取由 lambda 定义的属性的名称,其工作原理如下:
ExpressionUtil.GetName((Thing t) => t.Property); // returns "Property"
我想把它变成一个扩展方法,所以语法是这样的:
((Thing t) => t.Property).GetName(); // wont compile : operator '.' cannot be applies to operand of type 'lambda expression'
但是我似乎不能这样做,因为((Thing t) => t.Property) 是一个 lambda(还不是表达式或 Func)。有没有办法编写直接应用于 lambda 的扩展方法?如果不是,为什么这是一件坏事?
【问题讨论】:
-
你也可以施放它,但这看起来很糟糕。 :)
-
@rynah 是的,如果可能的话,我试图避免强制转换,将它放在扩展方法中的全部目的是让你更容易阅读你有点丢失的强制转换代码
标签: c# lambda extension-methods