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而不仅仅使用任意字典类型可以获得什么真正的优势,除了不明显你正在使用将在运行时确定的类型。
3 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
一个优点是绑定方案。数据网格和属性网格将通过TypeDescriptor系统获取动态属性。此外,WPF数据绑定将理解动态属性,因此WPF控件可以比字典更容易绑定到ExpandoObject。
在某些情况下,可能还需要考虑与动态语言的互操作性,这些语言将期望DLR属性而不是字典条目。
婷婷同学_
TA贡献1844条经验 获得超8个赞
对我来说真正的好处是来自XAML的完全轻松的数据绑定:
public dynamic SomeData { get; set; }
...
SomeData.WhatEver = "Yo Man!";
...
<TextBlock Text="{Binding SomeData.WhatEver}" />
- 3 回答
- 0 关注
- 2635 浏览
添加回答
举报
0/150
提交
取消