.Net 2.0中是否有任何方法可以从委托中检索属性名称?: i => i.Name
我打电话的时候: var property = MyMethod(i => i.Name);
我希望MyMethod返回字符串“Name”。所以'property'的值应该是“Name”。
在.Net 3.5中有简单的方法(表达式树),但我必须只使用2.0 Framework。
克里斯
答案 0 :(得分:3)
不,这是不可能的,因为.NET 2.0不支持表达式树。始终编译匿名委托,不能将其解析为表达式
答案 1 :(得分:3)
在.NET 2.0中,您必须从正文中获取目标方法,调用MethodBase.GetMethodBody
然后解析IL。我怀疑这不是一件容易的事。
一种选择是在针对.NET 2.0的System.Core
实现中使用Mono表达式树,但仍然使用C#3编译器进行编译。我听说过这种方法很好,但这是一个很大的解决方法。