WCF架构问题

时间:2012-02-16 21:47:51

标签: wcf-client

以下是服务的架构。

<xs:element name="StartDate" type="tns:DateType">
  <xs:annotation>
    <xs:documentation>The start date of the planning item in question</xs:documentation>
  </xs:annotation>
</xs:element>
<xs:complexType name="DateType">
  <xs:annotation>
    <xs:documentation>
      0 - Hard Date (Use the date defined by the year, month and day attributes
      2 - Retirement
      3 - Death
      4 - Disability
      5 - Long Term Care
    </xs:documentation>
  </xs:annotation>
  <xs:sequence>
    <xs:element name="Date">
      <xs:complexType>
        <xs:attribute name="date_type" use="optional" default="0">
          <xs:simpleType>
            <xs:restriction base="xs:int">
              <xs:enumeration value="0">
                <xs:annotation>
                  <xs:documentation>Hard Date (Use the date defined by the year, month and day attributes</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="2">
                <xs:annotation>
                  <xs:documentation>Retirement</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="3">
                <xs:annotation>
                  <xs:documentation>Death</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="4">
                <xs:annotation>
                  <xs:documentation>Disability</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="5">
                <xs:annotation>
                  <xs:documentation>Long Term Care</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

这是代理类

公共部分类DateTypeDate     {

    private int date_typeField;


    public DateTypeDate()
    {
        this.date_typeField = 0;
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int date_type
    {
        get
        {
            return this.date_typeField;
        }
        set
        {
            this.date_typeField = value;
        }
    }


}

我有一个要求,我们需要在date_type中发送0值。

1-我尝试了以下方法,假设默认情况下应该指定“0”值。

   StartDate = new DateType();
   DateTypeDate date = new DateTypeDate();

2-然后我明确地将“date_type”值指定为0

StartDate = new DateType();
   DateTypeDate date = new DateTypeDate();
   date.date_type = 0;
   StartDate.Date = date;

在这两种情况下,“date_type”节点都不会出现在实际请求xml被发送到服务中。这是生成的请求xml。

    <StartDate>
    <Date></Date>
    </StartDate>

But if i assign a different value than 0 then i can see the date_type node. for example 

    <StartDate>
     <Date date_type="2"></Date>
     </StartDate>


Would you able to help what could be the reason that node doesn't appear in request xml id i assign it to "0" also is there any way the node can appear without making chnages in schema. Thanks in advance

1 个答案:

答案 0 :(得分:0)

我不是XML Schema专家,但在我看来问题几乎可以肯定是因为模式中的以下行:

<xs:attribute name="date_type" use="optional" default="0">

如果属性是可选的,则意味着客户端不必发送它。尝试改为需要它。