2

假设我有一个带有 FreezerPack 属性的午餐盒类,该类具有名称属性。

public class LunchBox
{
    public FreezerPack FreezerPack { get; set; }
}

public class FreezerPack
{
    public string Name { get; set; }
}

使用反射,我可以像这样得到 FreezerPack:

var lunchBox = new LunchBox
{
    FreezerPack = new FreezerPack
    {
        Name = "I'm so cool"
    }
};

var freezerPack = typeof(LunchBox)
                    .GetProperty("FreezerPack")
                    .GetValue(lunchBox, null);

但是,当我只有作为 T 的午餐盒和属性路径为“FreezerPack.Name”的字符串时,如何从午餐盒中的 FreezerPack 中获取名称?.GetProperty("FreezerPack.Name")似乎没有奏效。

4

2 回答 2

2

不,您需要反思以下结果FreezerPack

var lunchBox = new LunchBox() { FreezerPack = new FreezerPack() { Name = "I'm so cool" } };
var freezerPack = typeof(LunchBox).GetProperty("FreezerPack").GetValue(lunchBox, null);
var freezerPackName = freezerPack.GetType().GetProperty("Name").GetValue(freezerPack, null);
Console.WriteLine(freezerPackName);
于 2012-06-19T19:42:10.613 回答
0

dynamic在这种情况下可能有意义:

dynamic lunchBox = new LunchBox() { FreezerPack = new FreezerPack() { Name = "I'm so cool" } };
string name = lunchBox.FreezerPack.Name;
于 2012-06-19T19:45:52.773 回答