ExpandoObject的真正好處是什么?添加到.NET 4 的ExpandoObject類(lèi)允許您在運(yùn)行時(shí)任意設(shè)置對(duì)象的屬性。使用a Dictionary<string, object>或者甚至是Hashtable有什么優(yōu)勢(shì)嗎?據(jù)我所知,這只是一個(gè)哈希表,您可以使用稍微簡(jiǎn)潔的語(yǔ)法訪(fǎng)問(wèn)。例如,為什么這樣: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而不僅僅使用任意字典類(lèi)型可以獲得什么真正的優(yōu)勢(shì),除了不明顯你正在使用將在運(yùn)行時(shí)確定的類(lèi)型。
3 回答

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
一個(gè)優(yōu)點(diǎn)是綁定方案。數(shù)據(jù)網(wǎng)格和屬性網(wǎng)格將通過(guò)TypeDescriptor系統(tǒng)獲取動(dòng)態(tài)屬性。此外,WPF數(shù)據(jù)綁定將理解動(dòng)態(tài)屬性,因此WPF控件可以比字典更容易綁定到ExpandoObject。
在某些情況下,可能還需要考慮與動(dòng)態(tài)語(yǔ)言的互操作性,這些語(yǔ)言將期望DLR屬性而不是字典條目。

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)我來(lái)說(shuō)真正的好處是來(lái)自XAML的完全輕松的數(shù)據(jù)綁定:
public dynamic SomeData { get; set; }
...
SomeData.WhatEver = "Yo Man!";
...
<TextBlock Text="{Binding SomeData.WhatEver}" />
- 3 回答
- 0 關(guān)注
- 2704 瀏覽
添加回答
舉報(bào)
0/150
提交
取消