如何从表达式属性中获取名称?
可能的重复:
使用 lambda 表达式获取方法名称和类型
我可以使用 Expression>并可靠地查看 Func 中引用了哪些属性?
并可靠
哪些
<% Html.TextBoxFor(x=>x.Property, Helper.GetAttributes<ViewModel>(x=>x.PropertyA)) %>
属性
public static Dictionary<string, string> GetAttributeValues<T>(Expression<Func<T, object>> myParam)
地 属性A?在返回正确的属性之前我需要做一些检查。 提前致谢..
干杯
PS:感谢 driis 帖子 如何从表达式属性获取名称? 我找到了解决
方案
public static Dictionary<string, string> GetAttributeValues<T>(Expression<Func<T, object>> myParam)
{
var item = myParam.Body as UnaryExpression;
var operand = item.Operand as MemberExpression;
Log.Debug(operand.Member.Name);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
创建 ModelMetadata 类的实例:
现在您可以获得有关模型上使用的属性的所有所需信息:
Create an instance of a ModelMetadata class:
And now you can get all the information you need, with respect to attributes used on your model:
这可能是:
在生产代码中,您可能应该在强制转换之前检查表达式类型,如果传入的表达式不是 MemberExpression,则抛出适当的异常。
That could be:
In production code, you should probably check the Expression type before the cast and throw an appropiate exception if the expression passed in is not MemberExpression.