Не удалось получить minOccurs = "1" maxOccurs = "1" для строкового типа в DataContract - PullRequest
3 голосов
/ 26 сентября 2011

Ниже приведен DataContract в моей службе WCF и соответствующая схема xsd, показанная в файле wsdl.

[Serializable]
[XmlRoot(Namespace = "http://www.example.com/l0257/services/mgnt/datatypes/0/1",IsNullable = false)]
public partial class InstrumentData
{
    private string _serialNo;
    private string _model;
    private int _pointsRecorded;

    [XmlElement(ElementName = "SerialNo", IsNullable = false)]
    public string SerialNo
    {
        get { return _serialNo; }
        set { _serialNo = value; }
    }

    [XmlElement(ElementName = "Model", IsNullable = false)]
    public string Model
    {
        get { return _model; }
        set { _model = value; }
    }

    [XmlElement(ElementName = "PointsRecorded", IsNullable = false)]
    public int PointsRecorded
    {
        get { return _pointsRecorded; }
        set { _pointsRecorded = value; }
    }
}

Файл WSDl содержит нижеприведенную информацию для соответствующего контракта данных:

 <xs:complexType name="InstrumentData">
 <xs:sequence>
  <xs:element minOccurs="0" maxOccurs="1" name="SerialNo" type="xs:string" /> 
  <xs:element minOccurs="0" maxOccurs="1" name="Model" type="xs:string" /> 
  <xs:element minOccurs="1" maxOccurs="1" name="PointsRecorded" type="xs:int" /> 
  </xs:sequence>
  </xs:complexType>

Может кто-нибудь сообщить мне, что мне не хватает в моем контракте на данные, чтобы получить minOccurs = 1 и maxOccurs = 1 для свойств "Model" и "SerialNo" класса Instrumentdata.

1 Ответ

4 голосов
/ 26 сентября 2011

См. здесь для полного описания способа определения minOccurs.Похоже, что для ссылочного типа необходимо указать IsNullable=true, чтобы получить minOccurs=1.

...