ExpandoObject的使用】的更多相关文章

该类型可以实现的是动态添加属性和移除属性,有点类似 js 中对象的操作,非常灵活 static void Main(string[] args) { dynamic obj = new System.Dynamic.ExpandoObject(); obj.name = "jj"; obj.age = ; obj.gender = ; foreach (var item in (IDictionary<string,object>)obj) { Console.WriteL…
在很多时候,我们在数据库里面定义表字段和实际在页面中展示的内容,往往是不太匹配的,页面数据可能是多个表数据的综合体,因此除了我们在表设计的时候考虑周到外,还需要考虑数据展现的处理.如果是常规的处理,那么需要对部分外键字段进行特别的转义处理,如果需要增加多一些字段,那么这种处理可能就相对比较麻烦一些.本文介绍如何在MVC控制器里面使用dynamic和ExpandoObject,实现数据转义后一体化的输出,包括增加任意多的字段信息. 1.数据信息的展示 一般情况下,我们在界面里面展示的信息是相对比较…
ExpandoObject的使用非常简单,很容易入手.上一篇里面已经有详细的介绍了,可以看这里(理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用)下面对ExpandoObject的使用场合和一些认为需要注意的地方,谈一下自己的看法: 一,ExpandoObject使用场合 在传递对象,但是又不想创建一个class或者struct的时候,ExpandoObject就是一个非常好的选择.假如我们有一个SendMail的函数,功能是发送一个…
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Drawing; using System.Dynamic; using System.Linq; using System.Text; using Sy…
昨天Insus.NET有实现<使用ViewModel来实现多个Model传送至视图>http://www.cnblogs.com/insus/p/5594134.html 那今天Insus.NET想使用另一种方法来实现这个传递多个model至视图中去. ExpandoObject动态对象. 一些数据还是来自前一篇. 在控制器实现: 在视图中实现: 运行结果:…
这篇继续分享下GetHashCode和ExpandoObject这两个比较好玩的方法. 一:GetHashCode 从MSDN上可以看到的解释是:用作特定类型的哈希函数,也就是说任何对象的实例都会有一个int32类型的HashCode,并且存放在FCL中的 HashCollection中,废话不说,看个例子: 从图中可以看到,两个类实例的hashcode不同,说明二者不是同一个引用,也就有了不同的hashcode,利用这个特性,我们是不是 可以生成一些随机数字呢? 1:在for循环中用rando…
http://www.cnblogs.com/LoveJenny/archive/2011/07/05/2098578.html ExpandoObject:表示一个对象,该对象包含可在运行时动态添加和移除的成员. dynamic dynEO = new ExpandoObject(); dynEO.number = 10; dynEO.Increment = new Action(() => { dynEO.number++; }); Console.WriteLine(dynEO.numbe…
1.  今天下午在做开发过程中,遇到了一个问题,要往Xml文件中添加新的节点,做个xml开发的都知道该怎么做,这不是什么难事,我卡卡卡卡把这个问题解决了,但是新问题又来了,要对xml中对应的节点数据添加属性更改通知功能???我一听到这个需求就蒙了,我上哪去给xml节点数据整TMD属性更改通知啊.哎.....没办法了,胳膊拧不过大腿啊,只能硬着头皮上咯. 2.  通过google.bing.百度的搜索,主要让我发现了有个神奇的玩意,那就是ExpandoObject类型,ExpandoObject归…
原文地址:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性.比如,即使你对GetDynamicObject方法返回的对象一无所知,你也可以像如下那样进行代码的调用,编译器不会报错: dynamic dynamicObject = G…
MVC控制器里面使用dynamic和ExpandoObject 在很多时候,我们在数据库里面定义表字段和实际在页面中展示的内容,往往是不太匹配的,页面数据可能是多个表数据的综合体,因此除了我们在表设计的时候考虑周到外,还需要考虑数据展现的处理.如果是常规的处理,那么需要对部分外键字段进行特别的转义处理,如果需要增加多一些字段,那么这种处理可能就相对比较麻烦一些.本文介绍如何在MVC控制器里面使用dynamic和ExpandoObject,实现数据转义后一体化的输出,包括增加任意多的字段信息. 1…
ExpandoObject,DynamicObject,DynamicMetaObject 接上文:浅谈Dynamic关键字系列之三(上) 为什么TryXXX方法没有被调用?? 将DynamicProduct 中的name修饰符改为private: private string name; 可以在TrySetMember方法中设置断点,再次运行: 为什么访问修饰符是Public不调用TrySetMember,是Private 就调用了呢?? 难道是因为private抛出了异常吗?? 再次看看Ms…
本篇文章中就ExpandoObject的基本使用进行一些demo.我们几乎都知道dynamic特性是.net 4.0中一个主要的新特性,而ExpandoObject正是这样的一个动态的类型.ExpandoObject允许我们在实例化之后在运行时进行成员的增加.删除.下面我们来看下基本的使用: Adding Members 1)实例化 如果需要延迟绑定的话,我们需要用dynamic来定义ExpandpObject的实例化变量,关于dynamic的使用,估计大家都很清楚了.   2)增加属性成员 0…
DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例: //ExpandoObject这个类需要引入System.Dynamic; dynamic dynEO = new ExpandoObject(); dynEO.number = 20; dynEO.Method = new Func<int, string>((int i) => { return…
如果: dynamic expando = new ExpandoObject(); d.SomeProp=SomeValueOrClass; 然后,我们在控制器中: return new JsonResult(expando); 那么,我们的前台将会得到: [{"Key":"SomeProp", "Value": SomeValueOrClass}] 而实际上,我们知道,JSON 格式的内容,应该是这样的: {SomeProp: SomeVal…
一,ExpandoObject使用场合 在传递对象,但是又不想创建一个class或者struct的时候,ExpandoObject就是一个非常好的选择. 假如我们有一个SendMail的函数,功能是发送一个通知邮件给客户,邮件的文本模板,如下: Dear [Name], We have sent the gift to your address: [Address] 在具体发送邮件的时候, [Name]和[Address]的内容是从函数GetMailParameters()动态读取出来的. 那么…
ExpandoObject与DynamicObject的使用   using ImpromptuInterface; using System; using System.Dynamic; namespace ConsoleApp2 { class Program { static void Main(string[] args) { dynamic expando = new ExpandoObject(); expando.name = "cys"; expando.Add = n…
using ImpromptuInterface; using System; using System.Dynamic; namespace ConsoleApp2 { class Program { static void Main(string[] args) { dynamic expando = new ExpandoObject(); expando.name = "cys"; expando.Add = new Func<int, int>(i=> {…
//public class Users { // public int Id { set; get; } // public string UName { set; get; } // public int UAge { set; get; } // } var userList = new List<Users>{ ,UName=}, ,UName=}, ,UName=}, ,UName=} }; List<System.Dynamic.ExpandoObject> objLi…
这东西是.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 { get; set; } 4.…
一:GetHashCode 从MSDN上能够看到的解释是:用作特定类型的哈希函数,也就是说不论什么对象的实例都会有一个int32类型的HashCode.而且存放在FCL中的 HashCollection中,废话不说,看个样例: 从图中能够看到,两个类实例的hashcode不同.说明二者不是同一个引用,也就有了不同的hashcode.利用这个特性,我们是不是 能够生成一些随机数字呢? 1:在for循环中用random生成. 1 static void Main(string[] args) 2 {…
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Dynamic; namespace WindowsFormsTest { public partial…
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Dynamic;//添加引用 namespace ExpandoObject_exercise { class Program { static void Main(string[] args) { dynamic expand = new ExpandoObject(); expand.name =…
IDictionary<string, object> obj = new System.Dynamic.ExpandoObject(); obj.Add(); dynamic obj2 = obj as System.Dynamic.ExpandoObject;…
js中的Object 对象. php中的stdClass. c# 也有动态可扩展对象 ExpandoObject,需要添加System.Dynamic引用 用法: dynamic model = new ExpandoObject(); model.ID = 1; model.ExamID = 2; model.AddTime = 3; model.Title = 4; model.Describe =5; 优点:可以不必创建实体类,对于一些常用的model类,还是建议创建实体类问卷后再用.…
dynamic最大的特点我想莫过于在它的类型在运行时才确定,这也是它与往静态类型关键字的最大区别.如果你在你的代码操作中用到了dynamic关键字去定义一个变量时,那么这个变量在编译的时候编译器不会对它进行类型检查,允许它到运行的时候再做解释.在大多数情况下,dynamic 类型与object 类型的行为是一样的.但是,不会用编译器对包含 dynamic 类型表达式的操作进行解析或类型检查,只是将有关该变量编译到类型 object 的变量中以及有关它的操作信息打包在一起,在运行时再解释运行.像下…
ExpandoObject :动态的增删一个对象的属性,在低层库(比如ORM)中非常实用.因为ExpandoObject实现了IDictionay<string, object>接口,常见的一种使用方法是,把expando转成dictionary,动态添加属性名和值[key,value],expando就达到了动态属性的目的.  演示样例代码(using System.Dynamic): dynamic expando = new ExpandoObject(); expando.A = &q…
1.动态创建对象及其属性ExpandoObject 查看ExpandoObject的定义:…
dynamic dynamicObject = new System.Dynamic.ExpandoObject(); dynamicObject.Id = Guid.NewGuid(); (dynamicObject as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>("Name", "ChenFeng")); Co…
什么是AutoMapper? AutoMapper是一个对象和对象间的映射器.对象与对象的映射是通过转变一种类型的输入对象为一种不同类型的输出对象工作的.让AutoMapper有意思的地方在于它提供了一些将类型A映射到类型B这种无聊的事情的有趣惯例.只要类型B遵守AutoMapper已经建立的惯例,大多数情况下,映射两种类型零配置就可以了. 为什么使用AutoMapper? 映射代码是无聊的.测试映射代码更无聊.AutoMapper提供了一些简单配置,还有一些简单的映射测试.真正的问题可能是“为…
返回总目录 Dynamic和ExpandoObject映射 AutoMapper不用任何配置就可以从dynamic(动态)对象映射或映射到dynamic对象. namespace FifthAutoMapper { //定义一个Person类 public class Person { public int Age { get; set; } public string Name { get; set; } } //主程序 class Program { static void Main(str…