那里有大量的反思例子可以让你得到:
1.班级中的所有属性
2.单个属性,前提是您知道字符串名称
有没有办法(使用反射,TypeDescriptor或其他方法)在运行时获取类中属性的字符串名称,前提是我拥有的是类和属性的实例?
编辑 我知道我可以使用反射轻松获取类中的所有属性,然后获取每个属性的名称.我要求的是一个函数来给我一个属性的名称,前提是我传递了属性的实例.换句话说,如何从class.GetType().GetProperty(myProperty)中找到PropertyInfo []数组返回给我的属性,以便从中获取PropertyInfo.Name?
鉴于
Expression<Func<T, object>>
Run Code Online (Sandbox Code Playgroud)
(例如x => x.Prop1.SubProp),我想根据需要创建一个字符串"Prop1.SubProp".
在单次访问的情况下(例如x => x.Prop1),我可以轻松地执行以下操作:
MemberExpression body = (expression.Body.NodeType == ExpressionType.Convert) ? (MemberExpression)((UnaryExpression)expression.Body).Operand : (MemberExpression)expression.Body;
return body.Member.Name;
Run Code Online (Sandbox Code Playgroud)
但是,如果存在更深的嵌套,例如x => x.Prop1.SubProp1,则只获得嵌套最深的名称,例如"SubProp1"而不是"Prop1.SubProp1"
反正有没有访问lambda表达式的完整属性路径?