ExpandoObject的真正好处是什么?

ExpandoObject的真正好处是什么?

添加到.NET 4 的ExpandoObject类允许您在运行时任意设置对象的属性。

使用a Dictionary<string, object>或者甚至是Hashtable有什么优势吗?据我所知,这只是一个哈希表,您可以使用稍微简洁的语法访问。

例如,为什么这样:

dynamic obj = new ExpandoObject();obj.MyInt = 3;obj.MyString = "Foo";Console.WriteLine(obj.MyString);

真的比以下更好,或者大不相同:

var obj = new Dictionary<string, object>();obj["MyInt"] = 3;obj["MyString"] = "Foo";Console.WriteLine(obj["MyString"]);

使用ExpandoObject而不仅仅使用任意字典类型可以获得什么真正的优势,除了不明显你正在使用将在运行时确定的类型。


芜湖不芜
浏览 2637回答 3
3回答

人到中年有点甜

一个优点是绑定方案。数据网格和属性网格将通过TypeDescriptor系统获取动态属性。此外,WPF数据绑定将理解动态属性,因此WPF控件可以比字典更容易绑定到ExpandoObject。在某些情况下,可能还需要考虑与动态语言的互操作性,这些语言将期望DLR属性而不是字典条目。

婷婷同学_

对我来说真正的好处是来自XAML的完全轻松的数据绑定:public&nbsp;dynamic&nbsp;SomeData&nbsp;{&nbsp;get;&nbsp;set;&nbsp;}...SomeData.WhatEver&nbsp;=&nbsp;"Yo&nbsp;Man!";...&nbsp;<TextBlock&nbsp;Text="{Binding&nbsp;SomeData.WhatEver}"&nbsp;/>
打开App,查看更多内容
随时随地看视频慕课网APP