2012-04-25 33 views
1

從XSD生成我的代理時,我收到了一個非常奇怪的行爲。假設我遵循XSD(假定已經放置了模式標籤)。我正在使用「添加服務引用」選項來生成代理。現在XSD中的類型名稱在代理中不匹配

<xs:complexType name="Segment"><xs:sequence><xs:element name="Legs"><xs:complexType><xs:sequence><xs:element maxOccurs="unbounded" name="Leg"><xs:complexType><xs:sequence><xs:element name="Ticket" type="xs:string" /></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType> 

從上面XSD生成代理,當我收到的類型如下

/// <remarks/> 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")] 
[System.SerializableAttribute()] 
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.saffr.com/schema/itinerary")] 
public partial class Segment : object, System.ComponentModel.INotifyPropertyChanged { 

    private SegmentLeg[] legsField; 

     /// <remarks/> 
    [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=5)] 
    [System.Xml.Serialization.XmlArrayItemAttribute("Leg", IsNullable=false)] 
    public SegmentLeg[] Legs { 
     get { 
      return this.legsField; 
     } 
     set { 
      this.legsField = value; 
      this.RaisePropertyChanged("Legs"); 
     } 
    } 

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

    protected void RaisePropertyChanged(string propertyName) { 
     System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
     if ((propertyChanged != null)) { 
      propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

現在問題就在這裏漲,我期待的是不是SegmentLeg類型應該是腿。實際上,解析器是將子類型(主複合類型)與子類型連接起來的。

我不知道我在做什麼錯。任何建議都是非常可觀的。

/RIZWAN

回答

0

我不知道的方式以便進行自定義,將允許覆蓋使用XSD.EXE推斷類型名稱默認的機制。

假設你可以玩XSD,你可以嘗試的是讓類型/元素成爲全局而不是匿名的,看看它是否能給出預期的結果。

相關問題