知识大全 详解C# 4.0中的新对象ExpandoObject

Posted

篇首语:忍耐力较诸脑力,尤胜一筹。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 详解C# 4.0中的新对象ExpandoObject相关的知识,希望对你有一定的参考价值。

详解C# 4.0中的新对象ExpandoObject  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  文是介绍C# 中 也就是 NET 中的一个新对象ExpandoObject 希望通过对这个ExpandoObject类的介绍 能帮助大家更好的理解 NET

  今天无意中看了 的一些新特性 其中看到SystemDynamic 命名空间下的ExpandoObject 类很感兴趣 看了篇英文文章给大伙分享下

  先来看下该类的成员 us/library/system dynamic expandoobject_members(VS ) aspx

  ExpandoObject instances can add and remove members at run time 什么意思呢?这意味着此类的实例能够在运行时动态的增加和删除成员 其中有个新概念 dynamic language runtime (DLR)(动态语言运行时) 我才疏学浅 还希望各位专家们多去研究下

  说说ExpandoObject这个动态特性的意义吧 我们用XML来做下对比

  首先我们创建一个XML对象

  XElement contactXML =      new XElement( Contact

  new XElement( Name Patrick Hines )

  new XElement( Phone )

  new XElement( Address

  new XElement( Street Main St )

  new XElement( City Mercer Island )

  new XElement( State WA )

  new XElement( Postal )

  )

  );

  再来看看Dynamic对象

  dynamic contact = new ExpandoObject();

  contact Name = Patrick Hines ;

  contact Phone = ;

  contact Address = new ExpandoObject();

  contact Address Street = Main St ;

  contact Address City = Mercer Island ;

  contact Address State = WA ;

  contact Address Postal = ;

  首先 我们看下dynamic对象的声明 dynamic contact = new ExpandoObject();

  我没有写成 ExpandoObject contact = new ExpandoObject() 因为我用静态的ExpandoObject 类型来声明则此对象没有在运行时增加成员的特性 所以我使用新的关键字dynamic

  其次 大家能注意到 我创建一个子节点只需要创建一个ExpandoObject实例作为contact对象的成员 这样你可以很简单的看清父子节点之间的关系 更重要的是你可以很简单的访问每一个元素

  用LINQ to XML

  Console WriteLine((string)contactXML Element( Address ) Element( State ));

  用 ExpandoObject对象   Console WriteLine(contact Address State);

  可是 当你有很多个contact对象时该怎么办呢?呵呵 看代码 Code//用XML 方式 XElement contactsXML =    new XElement

  ( Contacts         new XElement( Contact             new XElement( Name Patrick Hines )

  new XElement( Phone )        )

  new XElement( Contact               new XElement( Name Ellen Adams )

  new XElement( Phone )

  )

  );

  //用dynamic对象 dynamic contacts = new List();

  contacts Add(new ExpandoObject());

  contacts[ ] Name = Patrick Hines ;

  contacts[ ] Phone = ;contacts Add(new ExpandoObject());

  contacts[ ] Name = Ellen Adams ;contacts[ ] Phone = ;

  再来看看用Linq to Object怎么来操作dynamic吧

  var phones = from c in (contacts as List)where c Name == Patrick Hines select c Phone;

cha138/Article/program/net/201311/13603

相关参考

知识大全 C#中的Namespace详解[2]

C#中的Namespace详解[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  别名的使用格

知识大全 C#中的Namespace详解[1]

C#中的Namespace详解[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我现在感到学

知识大全 C#语言中的重点知识详解(三)

C#语言中的重点知识详解(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第五章代理    

知识大全 C#语言中的重点知识详解(二)

C#语言中的重点知识详解(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第三章类属性   

知识大全 详解AJAX核心中的XMLHttpRequest对象

详解AJAX核心中的XMLHttpRequest对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 详解.NET 4.0代码契约组件

详解.NET4.0代码契约组件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码契约组件是对N

知识大全 C#特性详解

C#特性详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#特性详解  

知识大全 C#中web.config文件详解

C#中web.config文件详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (一)WebC

知识大全 C# TextBox事件实现实例详解

C#TextBox事件实现实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#TextB

知识大全 详解Visual C# 2010几大新特征

详解VisualC#2010几大新特征  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一简介