Сгенерированный WSDL из службы WCF объявляет nullable, но это необходимо - PullRequest
0 голосов
/ 03 мая 2019

У меня есть служба WCF, использующая класс, который правильно помечен как DataContract. В этом контракте данных (который является структурным типом) у меня есть Префиксное свойство определено:

[DataContract(Name = "myIdentifier")]
[Serializable]
public struct MyIdentifierExtern {
    /// <summary>Gets or sets the identifier.</summary>
    /// <value>The identifier.</value>
    [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true, Order = 2)]
    [XmlElement(ElementName = "id", IsNullable = false, Order = 2)]
    public int Id { get; set; }

    /// <summary>Gets or sets the prefix.</summary>
    /// <value>The prefix.</value>
    [DataMember(Name = "prefix", IsRequired = true, EmitDefaultValue = true, Order = 1)]
    [XmlElement(ElementName = "prefix", IsNullable = false, Order = 1)]
    [MaxLength(1)]
    [MinLength(1)]
    public string Prefix { get; set; }
...    

Однако полученный WSDL (от доступа к службе по настроенному URL-адресу с помощью запроса ".... svc? SingleWsdl") возвращает:

<xs:complexType name="myIdentifier">
  <xs:annotation>
    <xs:appinfo>
      <IsValueType xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsValueType>
    </xs:appinfo>
  </xs:annotation>
  <xs:sequence>
    <xs:element name="prefix" nillable="true" type="xs:string"/>
    <xs:element name="id" type="xs:int"/>
  </xs:sequence>
</xs:complexType>

Почему префикс объявлен как nillable?

...