クラスプロパティ値を取得する方法、またはヘルパーメソッド「GetValue」を削除する方法にインデックスを付けることができます

user584018

私は以下のコードを持っています、

var data = new Dictionary<string, TestData>
            {
                { "A1", new TestData { Name = "N1", Section = "S1" } },
                { "A2", new TestData { Name = "N2", Section = "S2" } }
            };

            var strArray = new string[2] { "Name", "Section" };

            foreach (KeyValuePair<string, TestData> entry in data)
            {
                foreach (string value in strArray)
                {
                    var X = GetValue(value, entry.Value);
                }
            }

private static string GetValue(string value, TestData data)
    {
        string val = string.Empty;

        if(value == "Name")
        {
            val = data.Name;
        }

        if (value == "Section")
        {
            val = data.Section;
        }

        return val;
    }

ここでは、クラスプロパティと文字列配列は同じ名前でNameありSection、クラスプロパティ値を取得するために小さなヘルパーメソッドを使用していますGetValue(value, entry.Value)

質問、ヘルパーメソッドGetValueまたはインデックスのような方法を取り除く方法はありますか?var X = entry.Value[value];

アルファ

リフレクションの使用

var entryName = entry.Value.GetType().GetProperty("Name").GetValue(entry.Value, null);
var entrySection = entry.Value.GetType().GetProperty("Section").GetValue(entry.Value, null);

したがって、コードには次のようになります。

foreach (KeyValuePair<string, TestData> entry in data)
{
    var entryName = entry.Value.GetType().GetProperty("Name").GetValue(entry.Value, null);
    var entrySection = entry.Value.GetType().GetProperty("Section").GetValue(entry.Value, null);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ