发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
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]
来自: 昵称10504424 > 《Wcf》
0条评论
发表
请遵守用户 评论公约
数据契约(DataContract)
数据契约(DataContract)上面这段代码把UserInfo类声明为DataContract,将UserName、Age、Location这3个属性声明为DataMember(数据成员)。DataContract也支持Name/Namespace属性,如同ServiceContra...
EndPoint(ABC)
当遇到数据类成员中标记有类似[XmlAttribute]属性这样的细致设置生成xml格式的属性时,这时WCF infrastructure需要调用XmlSerializer序...
C++的反射和序列化
有了反射做序列化相当的方便, 如果没有的话就像GameBryo那样做也凑合把Name(或CRC)与Value一起序列化后就可以做到版本的兼容, 对于成员属性改动频繁的情况很实用对于重复性的数据的二进制序列化可以进...
java注解
以上定义出来的注解就是一个最简单的注解了,但这样的注解意义不大,因为注解中没有任何内容,就好像 我们定义一个类而这个类中没有任何...
WCF中的序列化[上篇]
实现PropertyChangedBase时c# – caliburn.micro序列化问题
实现PropertyChangedBase时c# – caliburn.micro序列化问题。public class Person{ public int Id {get;public class Person : PropertyChangedBase{ public int Id {get;public string FirstName { ge...
Java面试(二)
Java面试(二)11.Java序列化和反序列化序列化(Serialize) 把内存中的Java对象转换成平台无关的二进制流的过程称为对象的序列化 对象的序列化主要有两种用途: 1)把对象的字节序列永久的保存...
为注解增加属性
为注解增加属性 下面我们来为注解添加属性.为注解添加属性就类似于为接口添加属性. 使用注解的属性 有一种情况,不需要写属性名。但...
易语言扩展界面支持库 工具条 窗口单元 - 易语言电脑技术 - 高级电脑技术 - 挥剑斩浮...
调用格式: 〈整数型〉 对象.插入按钮 ([插入位置],[类型],[图片索引],[标题],[动态提示文本],[按钮状态])其中"选中"状态在类型为多选按钮或单选按钮时有效,"按下...
微信扫码,在手机上查看选中内容