2

Name のプロパティを持つ FreezerPack のプロパティを持つ LunchBox クラスがあるとします。

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);

しかし、LunchBox が T で、プロパティ パスが "FreezerPack.Name" の文字列しかない場合、LunchBox の FreezerPack から Name を取得するにはどうすればよいでしょうか。.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 に答える