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

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

最佳答案

您必须将 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 以便在运行时确定属性访问权限 - 否则您的示例将无法编译)

关于c# - 如何动态引用 ExpandoObject 中的字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5903581/

10-13 04:25