【问题标题】:How do I reference a field in an ExpandoObject dynamically?如何动态引用 ExpandoObject 中的字段?
【发布时间】:2011-05-05 20:17:54
【问题描述】:

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

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

【问题讨论】:

    标签: c# dynamic expandoobject


    【解决方案1】:

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

    【讨论】:

    • 请注意,转换可以隐式完成:IDictionary&lt;string, object&gt; expandoDict = expando; 可以正常工作。
    • 感谢您的信息。我真的很希望我可以说 expando["whatever"]。我真的不明白为什么演员阵容是必要的,尤其是因为它是动态的。
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2023-03-19
    相关资源
    最近更新 更多