【发布时间】:2013-03-13 09:18:00
【问题描述】:
例如,我有以下课程。
public class Level1
{
public int intprop;
public Level2 level2;
}
public class Level2
{
public string strprop;
public Level3 level3;
}
public class Level3
{
public float fltprop;
}
现在如果我得到fltprop,那么如何知道这个属性层次是这样的Level1.level2.level3.fltpro?
有什么方法可以通过反射来知道属性位置的层次结构吗?
更新:
如果查看 Level1 到 Level3 类,您可以看到 fltprop 位于 Level1 => level2 => level3 => fltprop 内。
现在通过使用反射,如果我得到 fltprop 作为 PropertyInfo,那么我可以知道这个属性来自 Level1 => level2 => level3 吗?意味着获取propertyinfo然后我知道这个属性的根级别3然后知道级别3的根级别2然后知道级别2的根是级别1。
【问题讨论】:
-
一般情况下:没有。你所拥有的只是一个对象;该对象可以在许多不同的地方使用,或者可以从同一图中的多条路线访问。表达类似内容的唯一方法是从表达式树开始,即
Expression<Func<Level1,float>> expr = x => x.Level2.Level3.fltprop;- 如果您有那个,那么答案将变为“是”。
标签: c# reflection