如何动态引用ExpandoObject中的字段?

时间:2011-05-05 20:17:55

标签: c# dynamic expando

有没有办法使用“IDictionary”样式查找动态访问expando的属性?

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

1 个答案:

答案 0 :(得分:11)

您必须将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,因此属性访问权限在运行时确定 - 否则您的样本将无法编译)