C4.0和VS2010新特性(7)

时间:2026-01-14

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

dynamic在第一话中已经展示它动态根据赋值类型直接自动完成反射的强大功能。现在又是一个新奇迹的诞生——

static void Main(string[] args)

{

dynamic d = new ExpandoObject();

= "ServiceBoy";

d.Action = Func<string>(()=>;);

Console.WriteLine(d.Action());

}

初看这个代码只是简单的读写Name属性,毫无稀奇可言。但是你注意哦——你到MSDN——或者你索性new ExpandoObject().Name 试试看,有Name和Action这个属性吗?——没有啊,真的没有!嘿,奇了怪了,既然没有,为什么你可以凭空“捏造出一个属性”,而且可以给属性赋值,并且读取属性内容呢?

俗话说的好——天下没有白给的食——微软这个类意在向我们揭露一个惊天的大秘密,那就是你可以自定义dynamic类,让这个类跟随你的要求动态的改变自己(比如增加一个新属性等)。我们可以参照MSDN,给出一个自定义的ExpandoObject: public class SimpleDynamic : DynamicObject

{

Dictionary<string, object> Properties = new Dictionary<string,

object>();

Dictionary<string, object[]> Methods = new Dictionary<string, object[]>();

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

{

if (!Methods.Keys.Contains())

{

Methods.Add(, null);

}

if (args != null)

{

Methods[] = args;

}

StringBuilder sbu = new StringBuilder();

foreach (var item in args)

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

精彩图片

热门精选

大家正在看

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

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

支付方式:

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

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