谁会建设网站,做蛋糕招聘网站,青岛设计网站的公司哪家好,网站设计论文的参考文献DataContractAttribute 与 DataMenberAttribute DataContractAttribute该特性只能用于枚举、类和结构体#xff0c;而不能用于接口#xff1b;又因为DataContractAttribute是不可以被继承的#xff0c;所以要所有作为数据契约的类型自身必须有这么一个特性#xff1b;而且一…DataContractAttribute 与 DataMenberAttribute DataContractAttribute该特性只能用于枚举、类和结构体而不能用于接口又因为DataContractAttribute是不可以被继承的所以要所有作为数据契约的类型自身必须有这么一个特性而且一个类型上只能有一个DataContractAttribute特性因为DataContractAttribute的AttributeUsage中AllowMultiple属性为FalseDataContractAttribute仅仅包含三个属性成员分别为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