诡异的XmlSerializer属性字段Specified

自动生成代码时,往往会为一个字段假设为 * , 生成另一个bool型字段: *Specified;

如:

[Serializable]

public class A

{

[XmlElement]

public string Id { get; set; }

[XmlIgnore]

public bool IdSpecified { get; set; }

}

这种写法会导致XmlSerializer使用不便

具体的在XmlSerializer 表现的问题是:

当我们为 A类型赋值时,

A a =new  A();

a.Id = “test”;

不管怎么赋值,序列化后的XML 里都不会有<Id></Id>这个节点。

除非,你把 IdSpecified 设置为 true.

这个问题也告诉大家要注意:

以后别创建 *Specified 这样的bool字段。省得引起 非常诡异的错误。

解决方案:

(1)契约中最好不要用Specified这个字段。

(2)对于已经形成的契约,在设置这些字段时,要把Specified设置为true。

时间: 2024-12-15 06:57:07

诡异的XmlSerializer属性字段Specified的相关文章

c# XML序列化与反序列化 属性字段标识

序列化对象 public class People { [XmlAttribute("NAME")] public string Name { set; get; } [XmlAttribute("AGE")] public int Age { set; get; } } [XmlRoot("Root")] public class Student : People { [XmlElement("CLASS")] public

sphinx中复合属性字段sql_attr_multi的用法

sphinx中复合属性字段sql_attr_multi的用法 sql_attr_multi在sphinx可以用来检索有层级关系的数据,效率相当高,如,在数据库中用一个4层的分类,分类下对应着不用的文章,现在需要做一个文章列表,要求,选择第一级分类时属于它的子分类的文章也要显示出来,就可以用下面的方法建索引 sql_query=                 SELECT di.company_document_id as id,di.company_document_id,          

关于获得IFeature的属性字段

最近在做管线的相关操作的时候涉及到了几何网络的相关内容,就是IGeometricNetwork这个接口的一些操作,我们在帮助文档的Network Analysis话题中可以找到相关的一些接口,注意不是Network Analyst哦! 在相关接口中我们通过IEIDHelepr,IEnumEIDInfo与IEIDInfo可以获得当前的Network中的某个NetElement对应的Feature,当我们获得这个Feature以后想要通过row["字段"] = item.get_Value

[ASP.NET MVC]如何定制Numeric属性/字段验证消息

原文:[ASP.NET MVC]如何定制Numeric属性/字段验证消息 对于一个Numeric属性/字段,ASP.NET MVC会自动进行数据类型的验证(客户端验证),以确保输入的是一个有效的数字,但是呈现在页面上的错误消息总是一段固定的文本:“The field {0} must be a number”,本篇提供一种解决方案使我们可以对此验证消息进行定制.[源代码从这里下载] 目录 一.针对Numeric属性/字段默认验证消息 二.默认的验证消息来源于何处? 三.通过自定义ModelVal

ArcEngine添加地图属性字段

/// <summary> /// 添加地图属性字段 /// </summary> /// <param name="name">名称</param> /// <param name="aliasName">别名</param> /// <param name="length">长度</param> /// <param name="d

C# 获取属性字段上DescriptionAttribute的值

var ent = new Ent(); foreach (var item in ent.GetType().GetProperties()) { var v = (DescriptionAttribute[])item.GetCustomAttributes(typeof(DescriptionAttribute), false); var descriptionName = v[0].Description; item.SetValue(ent,descriptionName+":1&qu

BizTalk开发系列(五) 属性字段

在根据消息内容进行路由的时候经常使用的是可分辨字段和属性字段.属性字段可以在各个 BizTalk Server 组件(包括管道和业务流程)中进行访问.属性字段还可用于消息路由.如果需要在上下文(而不是在业务流程)中访问升级的消息数据,必须创建一个或多个属性 架构来描述要升级的数据. 消息上下文中的每个属性均由以下三个部分构成:名称.命名空间和值.例如: <Property Name="InterchangeID" Namespace=http://schemas.microsof

[ArcGIS API for JavaScript 4.8] Sample Code-Popups-1-popupTemplate的概念和popup中属性字段值的多种表现形式

[官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/index.html] 一.Intro to PopupTemplate(关于popup模板) popups(弹出框)提供了一种简便的方式去查看layers(图层)或者graphics(图形)的属性信息.它也可以展示鼠标在view(视图)中的点击位置的坐标等其他相关信息.在ArcMap中,查看要素图层(shapefile)的属

JFinal Model判断数据库某条记录的属性字段是否包含空值

如果做报表,一条记录中有空值,使用FreeMarker渲染word会报错,并把错误日志输出到Word中.所以需要之前判断下当前记录中属性值是否有空值. package com.huijiasoft.utils; import java.util.Iterator; import java.util.Set; import java.util.Map.Entry; import com.huijiasoft.model.User; /** * @author pangPython * 数据库工具类