通过一元表达式访问对象属性值

3

如何在不使用“直接”反射的情况下,通过匹配一元表达式“成员名称”来获取对象属性值?

public object DoSomething<T>(UnaryExpression uExp, T obj)
   {            
        object res = null;                       
        // NOTE: UnaryExpression contains a property from T type.
        // TODO: get UnaryExpressionMatchingProperty value

        // res = obj.UnaryExpressionMatchingProperty;
        return res;
    }

uExp.Operand as MemberExpression,然后获取成员细节? - Jim
1个回答

2
这应该生成值或者null,如果一元表达式的结构不符合预期:
var prop = ((uExp.Operand as MemberExpression)?.Member as PropertyInfo);
if (prop?.CanRead == true) { // Needs "== true" because ?. makes Nullable<bool>
    res = prop.GetValue(obj);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接