这东西是.NET Framework 4.5 的新东西..
发现这个,大概就跟发现新大陆一样的兴奋,让我再次赞叹Anders Hejlsberg 之神..
 
这边有MSDN : http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx
 
简单看一下他方便的地方..
 
我自己建立一个对象:

1.public class Product
2.{
3.public string Name { getset; }
4.}

这时候如果我在'执行期' 的时候,需要加入一个dynamic 的属性..
叫做Description 怎么办呢?!

01./// <summary>
02./// 转成可以扩充的对象
03./// </summary> www.it165.net
04./// <param name="obj"></param>
05./// <returns></returns>
06.public dynamic ConvertToDynamic(object obj)
07.{
08.IDictionary<stringobject> result = new ExpandoObject();
09. 
10.foreach (PropertyDescriptor pro in TypeDescriptor.GetProperties(obj.GetType()))
11.{
12.result.Add(pro.Name, pro.GetValue(obj));
13.}
14. 
15.return result as ExpandoObject;
16.}

我写一只method 会将原本的Product 对象,转成Key Value 型态后转成ExpandoObject
之后就可以在'执行期' 加入新属性..

01.Product p1 = new Product();
02.p1.Name = "商品名称";
03. 
04. 
05.dynamic exProd = ConvertToDynamic(p1);
06.//下面两个属性都是 在执行期可被扩充出来的
07.exProd.Description = "叙述";
08.exProd.NewProperty1 = "我是新属性";
09. 
10.Response.Write(exProd.Name + "," + exProd.Description + "," + exProd.NewProperty1);

结果:

这真的在扩充上面,是非常好用的东西…

最新文章

  1. ASP.NET MVC3 Razor 调试与预加载
  2. UIDynamic(简单介绍)
  3. php截取字符串函数
  4. Oracle处理特殊字符
  5. 从零开始搭建Prometheus自动监控报警系统
  6. POJ--1056 IMMEDIATE DECODABILITY &amp;&amp; POJ--3630 Phone List(字典树)
  7. 卷积中的full、same、valid
  8. git 创建分支
  9. 键盘Hook【Delphi版】
  10. [Java并发编程(五)] Java volatile 的实现原理
  11. Vue运行报错--eslint
  12. Mongodb学习笔记(1)--入门
  13. Scala入门4(_的用法)
  14. I.MX6 PWM buzzer driver hacking with Demo test
  15. windows 10开启bash on windows,配置sshd,部署hadoop
  16. TP框架中field查询字段
  17. WEB-INF目录下的文件访问权限
  18. Java50道经典习题-程序1 不死神兔
  19. POJ 3764 The xor-longest Path 【01字典树&amp;&amp;求路径最大异或和&amp;&amp;YY】
  20. nginx+ssl+Portus+registry docker仓库

热门文章

  1. (译)Getting Started——1.1.1 Start Developing IOS Today(开始IOS开发)
  2. love2d教程33--window模块
  3. Unity5.1 新的网络引擎UNET(四) UNET Remote Actions
  4. 数据库设计(二)Introduction to Database Design
  5. IPC之SystemV
  6. angularjs 手动启动
  7. sql把varchar转化为int型
  8. js 控制按钮点击后不可用
  9. 远程sql 同步程序
  10. 请说明SQLServer中delete from tablea &amp; truncate table tablea的区别