我正在使用XmlSerializer进行WCF服务(在我的服务中有这样的理由)。但是最近我遇到了这个问题:我找不到一种简单的方法来创建所需的引用类型属性,即在XSD中使它的定义如下所示:
<xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:string"/>
而不是:
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string"/>
以下是属性的代码:
[XmlElement]
public string Name { get; set; }
我知道使用DataContractSerializer我可以这样做:
[DataMember(IsRequired = true)]
public string Name { get; set; }
我会得到所需的架构。
如何使用XmlSerializer属性获得与IsRequired类似的功能?
感谢。
答案 0 :(得分:0)
使用
[XmlElement(IsNullable=true)]
应该强制该成员即使在null时序列化,使得它的minOccurs为1(我认为 - 没有检查过。)
答案 1 :(得分:0)
方法是手动创建或编辑XSD,然后使用经过验证的XmlReader作为XmlSerializer的输入。