WCF:并非必需属性

时间:2018-10-29 11:44:16

标签: c# wcf datacontractserializer

有些顽固的行为,使用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”)。

我的定义有什么问题? (或理解?)

0 个答案:

没有答案