Gibt es eine Möglichkeit, dynamisch auf das Wörterbuchelement zuzugreifen, wenn der Elementname als Zeichenfolge in einer Variablen gespeichert wird?Dynamisches Zugreifen auf als Zeichenfolge in einer Variablen gespeichertes Wörterbuchelement
string field2 = "Entity[\"EmpId\"]";
Ich habe versucht, den String-Typen Zugriff auf und es funktioniert wie erwartet, aber nicht in der Lage zu verstehen, wie das Wörterbuch Elementwert dynamisch zu bekommen. Hier ist, was ich bisher versucht habe. 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 bat um ** dynamisch Zugriff ** ein Wörterbuch Element. Du hast es direkt gemacht. – Xiaoy312
Nicht sicher, ob die Besetzung nicht gewünscht ist, da es bereits sagt, dass es ein Wörterbuch sein wird. – SirH
Es scheint fast so, als wollte OP auf das Objekt über den XML-Selektor zugreifen, was ohne einen Zaubertrick nicht funktionieren wird. – Xiaoy312