我在一些代码创建此表达式:表达`吨=>(t.SomeProperty作为对象)`是指一种方法,而不是一个属性
t => (t.SomeProperty As Object)
和现在正在尝试获取属性-name(SomeProperty
)通过这个小片段(从网上找来的很长一段时间的自我):
public static PropertyInfo GetPropertyInfo<TSource, TProperty>
(TSource source, Expression<Func<TSource, TProperty>> propertyLambda) {
var type = typeof(TSource);
var member = propertyLambda.Body as MemberExpression;
if (member == null)
throw new ArgumentException($"Expression '{propertyLambda}' refers to a method, not a property.");
var propInfo = member.Member as PropertyInfo;
if (propInfo == null)
throw new ArgumentException($"Expression '{propertyLambda}' refers to a field, not a property.");
if (type != propInfo.ReflectedType && !type.IsSubclassOf(propInfo.ReflectedType))
throw new ArgumentException($"Expresion '{propertyLambda}' refers to a property that is not from type {type}.");
return propInfo;
}
但你也知道,propertyLambda.Body as MemberExpression
始终为空,导致此:t => (t.Some1 As Object)
不是财产指。在这种情况下,有没有办法获得物业名称?