从委托 i 获取属性名称 => i.姓名

发布于 2024-08-11 22:08:52 字数 216 浏览 4 评论 0原文

.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遗失的美好 2024-08-18 22:08:52

在 .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.

好听的两个字的网名 2024-08-18 22:08:52

不,这是不可能的,因为 .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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文