Как динамически ссылаться на поле в ExpandoObject? - PullRequest
4 голосов
/ 06 мая 2011

Есть ли способ динамического доступа к свойству эксплоанды с помощью поиска в стиле "IDictionary"?

var messageLocation = "Message";
dynamic expando = new ExpandoObject();
expando.Message = "I am awesome!";
Console.WriteLine(expando[messageLocation]);

1 Ответ

11 голосов
/ 06 мая 2011

Вы должны привести ExpandoObject к IDictionary<string, object>:

var messageLocation = "Message";
dynamic expando = new ExpandoObject();
expando.Message = "I am awesome!";

var expandoDict = (IDictionary<string, object>)expando;
Console.WriteLine(expandoDict[messageLocation]);

(Также ваша переменная expando должна быть набрана как dynamic, чтобы доступ к свойству определялся во время выполнения - в противном случае ваш пример выиграл 't compile)

...