C# ECMA-type Object,可以赋值任意名称、任意值类型的属性

System.Dynamic.ExpandoObject 配合 dynamic关键字,可以创造出一种 ECMA风格的object,其功能为,可以直接为它赋值任意名称、任意值类型的属性

1 dynamic obj = new System.Dynamic.ExpandoObject();
2 
3 obj.intValue = 123;
4 
5 obj.strValue = "234";
6 
7 obj.XXClass = new XXClass();


不过,有网友指出,这种东西不好。原因如下:

1.php就是因为这种磨砺两可的东西太多了,导致了语言的不稳定性。主要表现在:

   1.1 属性是否存在(null判断)会出问题。比如,有时明明为null,但某种判断Null的方法,得出的结果却认为它不为null

   1.2 属性类型判断会出问题。比如有继承关系的。

   1.3 以上两者,在开发中,为了保证正确性,实际代价远远大于使用这种类型得来的好处。

2.dynamic关键字会屏蔽了IDE的自动提示和自动补全功能,即使 = new XXX() 这种指明了创建何种类后,依然如此。

 

 

 

posted on 2013-04-08 09:09  xxxteam  阅读(583)  评论(0编辑  收藏  举报

导航