知识大全 详解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] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 别名的使用格
C#中的Namespace详解[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我现在感到学
C#语言中的重点知识详解(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第五章代理
C#语言中的重点知识详解(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第三章类属性
知识大全 详解AJAX核心中的XMLHttpRequest对象
详解AJAX核心中的XMLHttpRequest对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
详解.NET4.0代码契约组件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码契约组件是对N
C#特性详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#特性详解
C#中web.config文件详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! (一)WebC
C#TextBox事件实现实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#TextB
详解VisualC#2010几大新特征 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一简介