変数に文字列として要素名が格納されている場合、辞書要素に動的にアクセスする方法はありますか?変数に文字列として格納されている辞書要素に動的にアクセスする
string field2 = "Entity[\"EmpId\"]";
文字列型にアクセスしようとしましたが、期待どおりに動作しますが、辞書要素の値を動的に取得する方法を理解できません。これまで私が試したことがあります。 Demo here
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
Message message = new Message();
message.EntityId = "123456";
message.Entity = new Dictionary<string, string>()
{
{ "EmpId", "987654"},
{ "DeptId", "10"}
};
// Dynamically accessing the field WORKS
string field1 = "EntityId";
var v1 = message.GetType().GetProperty(field1).GetValue(message, null); // <-- Works as expected
Console.WriteLine("EntityId: " + v1.ToString()); // <-- Output: 123456
// Dynamically accessing a Dictionary element DOESN'T WORK
string field2 = "Entity[\"EmpId\"]";
var v2 = message.GetType().GetProperty(field2).GetValue(message, null); // <-- Throws an exception
//Console.WriteLine("Name: " + v2.ToString()); // <-- Expected Outut: 987654
Console.WriteLine();
}
class Message
{
public string EntityId { get; set; }
// Replacing EntityId with a Dictionary as we have more than one Entities
public Dictionary<string, string> Entity { get; set; }
}
}
OPは**動的に**辞書要素にアクセス**を求めています。あなたはそれを直接行いました。 – Xiaoy312
キャストが望ましくないかどうかは既に分かっています。 – SirH
OPはXMLセレクタを介してオブジェクトにアクセスしたかったようですが、これはいくつかの魔法のトリックなしでは動作しません。 – Xiaoy312