gpt4 book ai didi

c# - Linq 表达式转字符串

转载 作者:行者123 更新时间:2023-11-30 19:25:39 25 4
gpt4 key购买 nike

这是一个简单的MVC方法,可以转换成html标签。

@Html.HiddenFor(model => model.myName);

这被转换成下面的 html。

<input type="hidden" name="myName" value="ABC..." />

如何将此表达式转换为字符串。假设如果我要写这种方法,我怎么知道属性名和它的值。假设从 HiddenFor 参数中,将如何提取 myName 和 myName 值。这不是 MVC 特有的,而是与 LINQ 表达式有关。

非常感谢。

最佳答案

这与 LINQ 无关(除了 LINQ 大量使用那些“表达式树”)。

model => model.MyProperty是一个 lambda 表达式,当被视为 Expression<Func<Model, T>> 时可以解析而不仅仅是 Func<Model, T> .

让我通过一个(大部分是不言自明的)例子来回答你的问题:

public static string GetPropertyName<T>(Expression<Func<Model, T>> expr)
{
var member = (MemberExpression)expr.Body;
var property = (PropertyInfo)member.Member;
return property.Name;
}

可以按如下方式使用:

public class Model
{
public int MyProperty { get; set; }
}

static void Main(string[] args)
{
// Prints "MyProperty"
Console.WriteLine(GetPropertyName(model => model.MyProperty));
}

关于c# - Linq 表达式转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com