如何获取泛型表达式中使用的属性的类型?
public static void Map<T>(Expression<Func<T, object >> expression)
{
var memberExpression = (expression.Body as UnaryExpression).Operand as MemberExpression;
var name = memberExpression.Member.Name;
}
用法:
Map<Article>(x => x.Name)
名称是字符串类型。
我如何获得类型?
public static void Map<T>(Expression<Func<T, object >> expression)
{
var memberExpression = (expression.Body as UnaryExpression).Operand as MemberExpression;
var name = memberExpression.Member.Name;
}
Usage:
Map<Article>(x => x.Name)
Name is of type string.
How do I get the type?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我假设你想要返回类型。如果您想要定义方法的类型,请使用memberExpression.Member.DeclaringType。
I assume you want the return type. If you want the type on which the method is defined, use
memberExpression.Member.DeclaringType
.如果您知道它始终是一个属性(而不是字段),您可以这样做:
这也修复了我在评论中提到的错误。
If you know that it will always be a property (and not a field), you can do it like this:
This also fixes the error I mentioned in a comment.
这是一个简单的表达式扩展方法,可能对其他人有用。
使用示例:
Here is a simple Expression Extension Method that may be useful to others.
Sample usage:
应该不会太难:
x.Name.GetType()
Shouldn't be too difficult:
x.Name.GetType()