新聞中心
本文是介紹C#4.0中,也就是.NET4.0中的一個新對象ExpandoObject,希望通過對這個ExpandoObject類的介紹,能幫助大家更好的理解.NET4.0。

創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、鼓樓網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為鼓樓等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
今天無意中看了4.0的一些新特性,其中看到SystemDynamic 命名空間下的ExpandoObject 類很感興趣,看了篇英文文章給大伙分享下。
先來看下該類的成員:http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject_members(VS.100).aspx
ExpandoObject instances can add and remove members at run time.什么意思呢?這意味著此類的實例能夠在運(yùn)行時動態(tài)的增加和刪除成員。其中有個新概念:dynamic language runtime (DLR)(動態(tài)語言運(yùn)行時),我才疏學(xué)淺,還希望各位專家們多去研究下。
說說ExpandoObject這個動態(tài)特性的意義吧。我們用XML來做下對比:
首先我們創(chuàng)建一個XML對象,
- XElement contactXML =
- new XElement("Contact",
- new XElement("Name", "Patrick Hines"),
- new XElement("Phone", "206-555-0144"),
- new XElement("Address",
- new XElement("Street1", "123 Main St"),
- new XElement("City", "Mercer Island"),
- new XElement("State", "WA"),
- new XElement("Postal", "68042")
- )
- );
再來看看Dynamic對象,
- dynamic contact = new ExpandoObject();
- contact.Name = "Patrick Hines";
- contact.Phone = "206-555-0144";
- contact.Address = new ExpandoObject();
- contact.Address.Street = "123 Main St";
- contact.Address.City = "Mercer Island";
- contact.Address.State = "WA";
- contact.Address.Postal = "68402";
首先,我們看下dynamic對象的聲明:dynamic contact = new ExpandoObject();
我沒有寫成 ExpandoObject contact = new ExpandoObject(), 因為我用靜態(tài)的ExpandoObject 類型來聲明則此對象沒有在運(yùn)行時增加成員的特性,所以我使用新的關(guān)鍵字dynamic.
其次,大家能注意到,我創(chuàng)建一個子節(jié)點(diǎn)只需要創(chuàng)建一個ExpandoObject實例作為contact對象的成員。 這樣你可以很簡單的看清父子節(jié)點(diǎn)之間的關(guān)系,更重要的是你可以很簡單的訪問每一個元素。
用LINQ to XML:
- Console.WriteLine((string)contactXML.Element("Address").Element("State"));用 ExpandoObject對象:
- Console.WriteLine(contact.Address.State);可是,當(dāng)你有很多個contact對象時該怎么辦呢?呵呵,看代碼:Code//用XML 方式:XElement contactsXML = new XElement
- ("Contacts", new XElement("Contact", new XElement("Name", "Patrick Hines"),
- new XElement("Phone", "206-555-0144") ), new XElement("Contact",
- new XElement("Name", "Ellen Adams"),
- new XElement("Phone", "206-555-0155") ) );//用dynamic對象:dynamic contacts = new List ();
- contacts.Add(new ExpandoObject());
- contacts[0].Name = "Patrick Hines";
- contacts[0].Phone = "206-555-0144";contacts.Add(new ExpandoObject());
- contacts[1].Name = "Ellen Adams";contacts[1].Phone = "206-555-0155";
- 再來看看用Linq to Object怎么來操作dynamic吧,
- var phones = from c in (contacts as List )
where c.Name == "Patrick Hines"
select c.Phone;
大家看了這個新特性有什么感受呢?想不想立刻感受下C# 4.0?不管怎么樣我是很期待啦。。希望.NET越來越強(qiáng)大~~
鏈接:http://www.cnblogs.com/417533880/archive/2009/10/19/1585981.html
文章名稱:詳解C#4.0中的新對象ExpandoObject
鏈接URL:http://www.fisionsoft.com.cn/article/cdeejsj.html


咨詢
建站咨詢
