DataContractAttribute 与 DataMenberAttribute

DataContractAttribute该特性只能用于枚举、类和结构体,而不能用于接口;又因为DataContractAttribute是不可以被继承的,所以要所有作为数据契约的类型自身必须有这么一个特性;而且一个类型上只能有一个DataContractAttribute特性;(因为DataContractAttribute的AttributeUsage中AllowMultiple属性为False);DataContractAttribute仅仅包含三个属性成员;分别为Name(数据契约名称)、Namespace(命名空间)、IsReference(表示在进行序列化的时候是否保持对象现有的结构,该属性默认值为False);

DataMenberAttribute该特性只能应用在字段和属性上;其有四个属性:分别为Name(数据成员的名称,默认为字段或属性的名称)、Order(相应的数据成员在最终序列化的XML中出现的位置,Order值越小越靠前默认值为-1)、IsRequired(表明属性成员是否是必需的成员,默认值为false)、EmitDefaultValue(表明在数据成员的值等级于默认值的情况下,是否还需要将其序列化到最终的XML中,默认值为true;表示默认值会参与序列化)

数据契约和数据成员序列化只跟是否应用的DataContractAttribute 与 DataMenberAttribute特性有关;与类型或成员的限制修饰符无关(public,private等);DataContractSerializer具有一个只读的MaxItemsInObjectGraph属性表示允许被序列化或反序列化对象的数量上限(可以防止黑客通过生成大容量的数据频繁地对服务器发送请求,最终导致服务器不堪重负而崩溃);[P180]

已知类型

由于托管对象的结构是通过CLR类型来描述,所以DataContractAttribute在进行序列化的时候必须先确定所有对象的真实类型;NET的类型可以分为声明类型和真实类型两种;比如类型实现的接口或抽象类,当我们使用基于接口或抽象类创建的DataContractAttribute去序列化一个实现了该接口或继承该抽象类的实例时,往往会因为无法识别对象的真实类型造成不能正常序列化;方法一:可以在数据契约中声明其类型[KnowType(typeof(类型))];方法二:可以采用配置[P189];方法三:可以采用ServiceKnownTypeAttribute特性;[P191]

转载于:https://www.cnblogs.com/wujy/p/3188512.html

WCF学习笔记之序列化相关推荐

  1. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

  2. WCF学习笔记(2)——独立WCF服务

    本文将建立一个silverlight与wcf通讯的简单实例,wcf服务将被独立出来,而不再寄放在Web中.以下是详细步骤: 新建Silverlight应用程序,名称WCFtest,在解决方案上右键添加 ...

  3. Java编程思想学习笔记4 - 序列化技术

    今天来学习下Java序列化和反序列化技术,笔者对<Java编程思想>中的内容,结合网上各位前辈的帖子进行了整理和补充,包括: 序列化概述 Java原生序列化技术 Hessian序列化技术 ...

  4. WCF学习笔记(基于REST规则方式)

    一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...

  5. 【应用篇】WCF学习笔记(一):Host、Client、MetadataExchage

    虽然已经在多个项目中成功应用过WCF,但是感觉自己对WCF的知识只知道一些皮毛而已.上次学习WCF也是为了项目需要,囫囵吞枣.这不是我学习方法的态度.所以时至今日,又重新拾卷,再仔细的将WCF一些细节 ...

  6. WCF学习笔记(二):在WCF中使用集合传输数据

    最近的开发,一直被DataContract头疼,微软为了更好的通用性和代码无关性,将DataContract进行了一系列的优化,使作为DataContract的类在进行Serialize的时候会被序列 ...

  7. Mcad学习笔记之序列化(2进制和Soap序列化)

    相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...

  8. WCF学习笔记(一):WCF Service Application和WCF Service Library的区别

    近来在学习WCF,遇到了不少问题,有的让我焦头烂额,不过解决问题的过程就是学习的过程,收获也不少. 昨天有个问题开始困扰我--WCF Service Application和WCF Service L ...

  9. WCF学习笔记之可靠会话

    可靠会话传输需要解决两个问题:重复消息和无序交付:制定WS-RM的一个主要目的就是实现一种模块化 的可靠消息传输机制:WS-RM两个版本(WS-RM1.0和WS-RM1.1): WCF中整个可靠会话的 ...

最新文章

  1. php链表笔记:单链表反转
  2. 数组--存储地址的计算
  3. 中国地理区域IP库整理
  4. Rest.Ler PHP API Server解决方案
  5. 如何新增或修改ns2的核心模組--queue management
  6. Python-数据结构(一)
  7. [Ubuntu]Apt-get命令参数详解
  8. 腾讯云+宝塔+tomcat / nginx部署前端代码
  9. 51单片机实现流水灯
  10. TypeError: Can't convert 'int' object to str implicitly
  11. oracle占用io,解决 oracle IO占用率很高的问题
  12. 移动开发技术第四次大作业
  13. Leetcode Golang 77. Combinations.go
  14. java抽象类变量_Java抽象类
  15. java计算时间差(耗时计算)的三种方式
  16. 【屏蔽贴吧广告】贴吧广告屏蔽办法-解决方案 【普通用户 非会员】
  17. 洛谷P1914 小书童——凯撒密码
  18. 如何用matlab画烧杯,matlab 微分方程求解作图这个方程怎么解,还有图象怎么出来~dN1/dt=[r1*(1-N1/K1)-m*N2]*N...
  19. 用HTML创作一个简单的电子时钟
  20. 在 Keras 模型中使用预训练的词嵌入

热门文章

  1. 计算机考试一级考试基础知识,全国计算机等级考试一级msoffice基础知识
  2. mathtype运行时错误48_在office中无法使用MathType该怎么办?
  3. const char * 类型的实参与 char * 类型的形参不兼容_4 种 C++ 强制类型转换,你都清楚吗?...
  4. php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程
  5. python编写代码时零_python – KeyError:运行打包代码时为0L
  6. mooc作业怎么上传附件_怎么以最低价格入门hifi音响?
  7. 艾特某人代码实现_Vue@某人,At某人,仿新浪微博@某人,@user,艾特,艾特某人...
  8. 什么是E1接口,E1的使用注意事项
  9. [渝粤教育] 江西外语外贸职业学院 商务英语翻译技巧 参考 资料
  10. 【渝粤教育】电大中专建设工程法规1作业 题库