为什么我无法索引到ExpandoObject?今天在研究C#动态时,有些事情让我感到惊讶(我从未使用过它们,但最近我一直在试验Nancyweb框架)。我发现我不能这样做:dynamicexpando=newExpandoObject();expando.name="约翰";Console.WriteLine(expando["name"]);最后一行抛出异常:无法使用[]应用索引我理解类型为“System.Dynamic.ExpandoObject”的表达式的错误消息,但我不明白为什么会这样。我查看了ExpandoObject的文档,它显式地实现了IDictionary,因此有一个this.[index]方法(MSDN)。为什么我不能调用它?当然,没有什么可以阻止我手动将ExpandoObject向下转换为字典然后索引到它,但这种方式忽略了这一点;它也没有解释Expando如何能够在其接口之一中隐藏方法。这里发生了什么?Expando如何能够隐藏其中一个接口的方法。因为,正如您在文档中正确发现的那样,索引器是一个显式接口实现。来自显式接口实现教程:实现接口的类可以显式实现该接口的成员。当一个成员被显式实现时,它不能通过类的实例访问,只能通过接口的实例访问。这意味着您必须将引用转换为接口才能访问它:以上是C#学习教程:为什么我不能索引到ExpandoObject?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——((IDictionary)expando)["name"]不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
