从委托i =>获取属性名称我的名字

时间:2009-11-17 11:50:47

标签: c# lambda

.Net 2.0中是否有任何方法可以从委托中检索属性名称?: i => i.Name

我打电话的时候: var property = MyMethod(i => i.Name);

我希望MyMethod返回字符串“Name”。所以'property'的值应该是“Name”。

在.Net 3.5中有简单的方法(表达式树),但我必须只使用2.0 Framework。

克里斯

2 个答案:

答案 0 :(得分:3)

不,这是不可能的,因为.NET 2.0不支持表达式树。始终编​​译匿名委托,不能将其解析为表达式

答案 1 :(得分:3)

在.NET 2.0中,您必须从正文中获取目标方法,调用MethodBase.GetMethodBody然后解析IL。我怀疑这不是一件容易的事。

一种选择是在针对.NET 2.0的System.Core实现中使用Mono表达式树,但仍然使用C#3编译器进行编译。我听说过这种方法很好,但这是一个很大的解决方法。