有些顽固的行为,使用IsRequired选项无法实现。
比方说,有一个非常小的DataContract:
[DataContract]
public class CommonEvent
{
[DataMember(IsRequired = true)]
public string Name { get; set; }
[DataMember(IsRequired = false, EmitDefaultValue = false)]
public string Description { get; set; }
}
当我启动WebService并引用它时,我将得到以下xsd:
<xs:complexType name="CommonEvent">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string" />
</xs:sequence>
</xs:complexType>
但是此XSD不需要名称...我已经阅读了将XmlElement(IsNullable = true)
添加到名称中的建议,但这也不能解决问题,因为名称的定义如下:<xs:element minOccurs="1" maxOccurs="1" name="Name" nillable="true" type="xs:string" />
,但仍然不需要任何值。
我对所需值的期望是这样的:<xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:string" />
(nillable的默认值为“ false”)。
我的定义有什么问题? (或理解?)