从委托 i 获取属性名称 => i.姓名
.Net 2.0 中有没有办法从委托检索属性名称?: 我=> i.姓名
当我打电话时: var 属性 = MyMethod(i => i.Name);
我希望 MyMethod 返回字符串“Name”。所以“属性”的值应该是“名称”。
在 .Net 3.5 中,有一个简单的方法可以做到这一点(表达式树),但我只能使用 2.0 框架。
克里斯
is there any way in .Net 2.0 to retrieve a property name from delegate?:
i => i.Name
When I call:
var property = MyMethod(i => i.Name);
I want MyMethod to return string "Name". So the value of 'property' should be "Name".
In .Net 3.5 there is simply way to do that (Expression Tree), but I have to use 2.0 Framework only.
Chris
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 .NET 2.0 中,您必须从主体中获取目标方法,请调用
MethodBase.GetMethodBody
然后解析 IL。我怀疑这不是一件容易的事。一种选择是在针对 .NET 2.0 的
System.Core
实现中使用 Mono 表达式树,但仍使用 C# 3 编译器进行编译。我听说这很有效,但这是一个有点激进的解决方法。In .NET 2.0 you'd have to get the target method from the body, call
MethodBase.GetMethodBody
and then parse the IL. This would not be an easy task, I suspect.One option would be to use the Mono expression tree in their
System.Core
implementation against .NET 2.0, but still compile with a C# 3 compiler. I have heard reports that this works fine, but it's a bit of a drastic workaround.不,这是不可能的,因为 .NET 2.0 不支持表达式树。匿名委托总是被编译的,它不能被解析为表达式
No, that's not possible because .NET 2.0 doesn't support expression trees. An anonymous delegate is always compiled, it can't be parsed as an expression