2012-04-25 5 views
1

XSD에서 프록시를 생성 할 때 매우 이상한 동작이 나타납니다. XSD (스키마 태그가 이미 배치되었다고 가정)를 따라했다고 가정 해 보겠습니다. 프록시 생성을 위해 서비스 참조 추가 옵션을 사용하고 있습니다. XSD 위에서 프록시를 생성 할 때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 타입 기대하고있어, 여기 상승은 다음과 같이

<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> 

지금은 유형을 얻고있다. 실제로 파서는 Segment (주 복합 유형)를 하위 유형과 연결합니다.

내가 잘못하고있는 것이 확실하지 않습니다. 어떤 제안이라도 매우 유용 할 것입니다.

/Rizwan

답변

0

나는 xsd.exe와 유형 이름을 추론하는 데 사용하는 기본 메커니즘을 대체 할 수있는 것이 사용자 정의를 허용하는 방법을 알고 아닙니다.

XSD로 재생할 수 있다고 가정 할 때 익명 대신 type/element를 전역으로 만들면 예상되는 결과를 얻을 수 있습니다.