有没有办法使用“IDictionary”样式查找动态访问expando的属性?
var messageLocation = "Message";
dynamic expando = new ExpandoObject();
expando.Message = "I am awesome!";
Console.WriteLine(expando[messageLocation]);
答案 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
,因此属性访问权限在运行时确定 - 否则您的样本将无法编译)