C4.0和VS2010新特性(10)

时间:2025-04-20

介绍VS2010的新特性等一些新功能

首先创建了一个d的动态类型,然后当赋值给Name的时候,因为Name是属性,所以触发了“TrySetMember”函数,该函数自动检查是否已经存在这个属性名,如果不存在,则将其添加进入一个Dictionary中并将对应赋予的值传递进去保存起来。当使用输出的时候,同样地,TryGetMember被触发,系统检测是否预先创建过这个值,如果没有,则抛出异常;存在的话,取出对应的存储value并返回给系统。

2)

dynamic d = new SimpleDynamic();

Console.WriteLine(d.Say(“Hello!”));

首先创建了一个d的动态类型,当动态创建一个方法的时候,系统检测是否包含这个方法名,不包含将添加这个方法名到Dictionary保存,接着检查参数是否为空,不为空把参数赋值给那个函数名作为Key的Dictionary中保存,最后使用StringBuilder串起来赋值给result作为输出。

下面给出一个比较复杂的例子——自定义的XML创建器(仿Jeffery Zhao): public class XmlCreator : DynamicObject

{

public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)

{

//如果除了第一个节点是字符串,后面都是XElement对象,表明此节点是父节点

if (args[1] is XElement)

{

XElement root = new XElement(args[0].ToString());

//把子节点添加到父节点

for (int i = 1; i < args.Length; ++i)

{

root.Add(args[i]);

}

result = root;

}

//否则是子节点

else

{

//拷贝所有属性到数组:

string[] attributes = new

string[binder.CallInfo.ArgumentNames.Count];

C4.0和VS2010新特性(10).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219