2012-01-31 88 views
4

我使用XmlSerializer进行WCF服务(在我的服务的情况下有这个原因)。但最近我碰到的问题:我无法找到一个简单的方法,使所需的参考类型属性,即使是在XSD看起来像这样的定义:XmlSerializer - 所需的元素

<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's的功能?

谢谢。

回答

0

使用

[XmlElement(IsNullable=true)] 

应该强制成员被序列化甚至当空,使之有一个1的minOccurs(我认为 - 没有检查)。

+0

你是对的,它确实在xsd中将minOccurs设置为1,但它也将nillable =“true”属性添加到xs:element。我想要的是保证没有这个元素的客户端消息不会被服务接受,所以我不必检查相应的属性为null。 – 2012-02-01 07:11:19

+0

我不认为你可以得到默认的xml序列化程序来强制元素,没有额外的属性。它会是一个选项来实现IXmlSerializable,所以你可以完全自定义生成的XML? – 2012-02-01 10:54:53

相关问题