我问类似的问题
here
,假设这种类型:
,假设这种类型:
- public class Product {
- public string Name { get; set; }
- public string Title { get; set; }
- public string Category { get; set; }
- public bool IsAllowed { get; set; }
- }
而这个使用MemberExpression的
- public class HelperClass<T> {
- public static void Property<TProp>(Expression<Func<T,TProp>> expression) {
- var body = expression.Body as MemberExpression;
- if(body == null) throw new ArgumentException("'expression' should be a member expression");
- string propName = body.Member.Name;
- Type proptype = null;
- }
- }
我这样用:
- HelperClass<Product>.Property(p => p.IsAllowed);
在HelperClass中,我只需要属性名称(在本例中为IsAllowed)和属性类型(在此示例中为Boolean)所以我可以获取属性名称,但是我无法获取属性类型.我在调试中看到属性类型如下图所示:
那么你建议如何获得房产类型?
解决方法
尝试将body.Member转换为PropertyInfo
- public class HelperClass<T>
- {
- public static void Property<TProp>(Expression<Func<T,TProp>> expression)
- {
- var body = expression.Body as MemberExpression;
- if (body == null)
- {
- throw new ArgumentException("'expression' should be a member expression");
- }
- var propertyInfo = (PropertyInfo)body.Member;
- var propertyType = propertyInfo.PropertyType;
- var propertyName = propertyInfo.Name;
- }
- }