我正試圖學習C#4.0附帶的所有新東西。我無法理解DynamicObject
和ExpandoObject
類型之間的差異。看起來好像使用DynamicObject
,例如,當您想要訪問Python腳本中的變量時和ExpandoObject
與COM/Office對象交談時。我對嗎?它們的用途有什麼不同?C#4.0 Dynamic vs Expando ...它們在哪裏適合?
回答
Expando 是一個dynamic
類型的成員可以在運行時添加(或刪除)。 dynamic
旨在允許.NET在與動態類型語言(如Python和JavaScript)接口時與類型進行互操作。
所以,如果你需要處理動態類型:使用dynamic
,如果你需要處理動態數據,比如XML或JSON:使用ExpandoObject
在Expando的聲明顯示動態和的expando之間的關係:
dynamic expando = new ExpandoObject();
,並增加了新的特性的能力:
expando.SomeNewStringVal = "Hello World!";
這代碼最後一行創建了一個全新的串親在expando對象中稱爲SomeNewStringVal
。字符串類型是從作業中推斷出來的。
因此,expando是一種動態數據類型,它可以表示動態變化的數據。簡而言之,就是這樣。 Here's a deeper look at dynamic and expando。
完整的示例:
using System;
using System.Dynamic;
class Program
{
static void Main(string[] args)
{
dynamic expando = new ExpandoObject();
expando.SomeNewStringVal = "Hello Brave New Whirrled!";
Console.WriteLine(expando.SomeNewStringVal);
// more expando coolness/weirdness:
var p = expando as IDictionary<String, object>;
p["A"] = "New val 1";
p["B"] = "New val 2";
Console.WriteLine(expando.A);
Console.WriteLine(expando.B);
}
}
雖然他已經接受了它,我認爲OP意味着DynamicObject和ExpandoObject的區別。 – nawfal 2015-07-30 06:46:56
只是爲了說明這一點在現實世界中確實派上用場。我只是在序列化爲xml或json之前使用它來創建dyanmic響應對象。這樣我可以遞歸地添加具有不同屬性名稱的子類,而無需定義大量的顯式屬性。 「GroupsL1」:[{「GroupingL2 :: [{... – user2326106 2016-07-20 16:09:39
['DynamicObject'](https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.dynamicobject?view=netframework- MSDN:*提供了一個在運行時指定動態行爲的基類,這個類必須是繼承的;你不能直接實例化它* MSDN頁面包含一個基於'DynamicObject'的簡化'ExpandoObject'實現因此,這兩種類型都用於後期綁定,但「ExpandoObject」是具體的(並且是封閉的),而「DynamicObject」只是自定義動態對象的基類。 – Palec 2017-08-26 19:26:31
- 1. Angular/React - 它們在哪裏適合?
- 2. 計算着色器,它們在哪裏適合管道?
- 3. Dynamic vs Dictionary [C#]
- 4. C語言標準集合它們在哪裏?
- 5. @dynamic實現哪裏可以找到它?
- 6. WCFExtras XmlComments ...它們在哪裏?
- 7. Firebase適合在哪裏?
- 8. Boot.scala適合在哪裏?
- 9. DI在哪裏適合CQS?
- 10. 哪裏適合放AWS Key
- 11. 5 .NET HTTP庫 - Microsoft.Net.Http適合哪裏?
- 12. 我們在哪裏適合SDLC可行性研究和分析
- 13. C#Authcookie集合在哪裏?
- 14. 重複在哪裏()vs多個集合在c#
- 15. VBA名稱 - 它們在哪裏引用?
- 16. Kohana活動,在哪裏放置它們
- 17. 推送通知,它們在哪裏?
- 18. doxygen評論在哪裏適合/必要?
- 19. jQuery UI在MVC中適合哪裏?
- 20. 哪個例外最適合在這裏?
- 21. AppDelegate文件在哪裏適合MVC?
- 22. Smalltalk-80最適合用在哪裏?
- 23. DAO模式 - 交易在哪裏適合?
- 24. 測試適合流星在哪裏?
- 25. ExtJS Action在哪裏適合MVC模式
- 26. Typesafe Activator在哪裏適合該項目
- 27. gmap3/jquery融合表層適合哪裏?
- 28. .Net 4.0 Redistributable - 我可以在哪裏找到它?
- 29. C + extern聲明 - 把它們放在哪裏
- 30. 今天的腳本適合哪裏
更好的答案在這裏:http://stackoverflow.com/questions/3565481/differences-between-expandoobject-dynamicobject-and-dynamic – 2014-03-01 22:56:10