私は以下のコードを持っています、
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]
コメントを追加