2017-01-02 4 views
0

Ich habe versucht, C# -Classes von XSD mit XSD2Code ++ (V4.2.0.31, lizenzierte Version) zu generieren. Die Code-Generierung funktioniert, aber die Einschränkungen werden weggelassen.xsd2code ++ Einschränkungen nicht generiert

XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name ="Product"> 
     <xs:complexType> 
      <xs:sequence maxOccurs="3"> 
       <xs:element name="Header" minOccurs="1" maxOccurs="1"/> 
       <xs:element name="Body"/> 
       <xs:element name ="value2" maxOccurs="1"> 
        <xs:simpleType> 
         <xs:restriction base="xs:string"> 
          <xs:minLength value="20" /> 
          <xs:maxLength value="22" /> 
         </xs:restriction> 
        </xs:simpleType> 
       </xs:element> 
       <xs:element name ="value4" maxOccurs="1"> 
        <xs:simpleType> 
         <xs:restriction base="xs:int"> 
          <xs:minInclusive value="5" /> 
          <xs:maxInclusive value="6" /> 
         </xs:restriction> 
        </xs:simpleType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

Und dieser Code erzeugt wurde, werden die Einschränkungen fehlen. Ich erwartete, sie in den Settern zu sehen.

// ------------------------------------------------------------------------------ 
// <auto-generated> 
// Generated by Xsd2Code++. Version 4.2.0.31 
// <NameSpace>xsd2code_Probierprojekt</NameSpace><Collection>List</Collection><codeType>CSharp</codeType><EnableDataBinding>False</EnableDataBinding><GenerateCloneMethod>False</GenerateCloneMethod><GenerateDataContracts>False</GenerateDataContracts><DataMemberNameArg>OnlyIfDifferent</DataMemberNameArg><DataMemberOnXmlIgnore>False</DataMemberOnXmlIgnore><CodeBaseTag>Net40</CodeBaseTag><InitializeFields>All</InitializeFields><GenerateUnusedComplexTypes>False</GenerateUnusedComplexTypes><GenerateUnusedSimpleTypes>False</GenerateUnusedSimpleTypes><GenerateXMLAttributes>True</GenerateXMLAttributes><OrderXMLAttrib>False</OrderXMLAttrib><EnableLazyLoading>False</EnableLazyLoading><VirtualProp>False</VirtualProp><PascalCase>False</PascalCase><AutomaticProperties>False</AutomaticProperties><PropNameSpecified>None</PropNameSpecified><PrivateFieldName>StartWithUnderscore</PrivateFieldName><PrivateFieldNamePrefix></PrivateFieldNamePrefix><EnableRestriction>True</EnableRestriction><RestrictionMaxLenght>True</RestrictionMaxLenght><RestrictionRegEx>True</RestrictionRegEx><RestrictionRange>True</RestrictionRange><ValidateProperty>True</ValidateProperty><ClassNamePrefix></ClassNamePrefix><ClassLevel>Public</ClassLevel><PartialClass>True</PartialClass><ClassesInSeparateFiles>False</ClassesInSeparateFiles><ClassesInSeparateFilesDir></ClassesInSeparateFilesDir><TrackingChangesEnable>False</TrackingChangesEnable><GenTrackingClasses>False</GenTrackingClasses><HidePrivateFieldInIDE>False</HidePrivateFieldInIDE><EnableSummaryComment>False</EnableSummaryComment><EnableAppInfoSettings>False</EnableAppInfoSettings><EnableExternalSchemasCache>False</EnableExternalSchemasCache><EnableDebug>False</EnableDebug><EnableWarn>False</EnableWarn><ExcludeImportedTypes>False</ExcludeImportedTypes><ExpandNesteadAttributeGroup>False</ExpandNesteadAttributeGroup><CleanupCode>False</CleanupCode><EnableXmlSerialization>True</EnableXmlSerialization><SerializeMethodName>Serialize</SerializeMethodName><DeserializeMethodName>Deserialize</DeserializeMethodName><SaveToFileMethodName>SaveToFile</SaveToFileMethodName><LoadFromFileMethodName>LoadFromFile</LoadFromFileMethodName><EnableEncoding>False</EnableEncoding><EnableXMLIndent>False</EnableXMLIndent><Encoder>UTF8</Encoder><Serializer>XmlSerializer</Serializer><sspNullable>False</sspNullable><sspString>False</sspString><sspCollection>False</sspCollection><sspComplexType>False</sspComplexType><sspSimpleType>False</sspSimpleType><sspEnumType>False</sspEnumType><BaseClassName>EntityBase</BaseClassName><UseBaseClass>False</UseBaseClass><GenBaseClass>False</GenBaseClass><CustomUsings></CustomUsings><AttributesToExlude></AttributesToExlude> 
// </auto-generated> 
// ------------------------------------------------------------------------------ 
#pragma warning disable 

namespace xsd2code_Probierprojekt 
{ 
using System; 
using System.Diagnostics; 
using System.Xml.Serialization; 
using System.Collections; 
using System.Xml.Schema; 
using System.ComponentModel; 
using System.IO; 
using System.Text; 
using System.ComponentModel.DataAnnotations; 
using System.Xml; 
using System.Collections.Generic; 


[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34209")] 
[System.SerializableAttribute()] 
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] 
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] 
public partial class Product 
{  
    private List<object> _header; 
    private List<object> _body; 
    private List<string> _value2; 
    private List<double> _value4; 
    private static XmlSerializer serializer; 

    public Product() 
    { 
     this._value4 = new List<double>(); 
     this._value2 = new List<string>(); 
     this._body = new List<object>(); 
     this._header = new List<object>(); 
    } 


    [System.Xml.Serialization.XmlElementAttribute("Header", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public List<object> Header 
    { 
     get 
     { 
      return this._header; 
     } 
     set 
     { 
      this._header = value; 
     } 
    } 


    [System.Xml.Serialization.XmlElementAttribute("Body", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public List<object> Body 
    { 
     get 
     { 
      return this._body; 
     } 
     set 
     { 
      this._body = value; 
     } 
    } 


    [System.Xml.Serialization.XmlElementAttribute("value2", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public List<string> value2 
    { 
     get 
     { 
      return this._value2; 
     } 
     set 
     { 
      this._value2 = value; 
     } 
    } 


    [System.Xml.Serialization.XmlElementAttribute("value4", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public List<double> value4 
    { 
     get 
     { 
      return this._value4; 
     } 
     set 
     { 
      this._value4 = value; 
     } 
    } 

Serialisers and Deserialisers etc. 

} 
} 

#pragma warning restore 

Natürlich kann ich es selbst validieren, aber meine Firma will die Beschränkungen von XSD zu erzeugen, schneller zu sein und Fehler zu vermeiden. Dies war der Grund für die professionelle Version von xsd2code.

Vielleicht hat jemand mehr Erfahrungen als ich, Vielen Dank im Voraus!

Antwort

0

Die Unterstützung beantwortete meine Frage und löste mein Problem. Für aufzählbare Eigenschaften wurden keine Einschränkungen generiert. Es war ein Bug und sollte in der nächsten Version (4.2.0.54 und höher) behoben werden.

Wie auch immer, danke für Ihre Zeit!

0

Ich kann bestätigen, dass die neueste Version von xsd2code ++ (xsd2code.com) alle Einschränkungen (auch für aufzählbare Eigenschaften) korrekt generiert.

Screenshot of xsd2code++

+0

ich nicht, weil ich nicht genug Ruf upvote kann. Der Fehler ist jetzt behoben, vielen Dank für die Bestätigung !!! –

0

Hier das Ergebnis:

[System.Xml.Serialization.XmlElementAttribute("value2", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    [System.ComponentModel.DataAnnotations.StringLengthAttribute(22, MinimumLength = 20)] 
    public List<string> value2 
    { 
     get 
     { 
      return this._value2; 
     } 
     set 
     { 
      System.ComponentModel.DataAnnotations.ValidationContext validatorPropContext = new System.ComponentModel.DataAnnotations.ValidationContext(this, null, null); 
      validatorPropContext.MemberName = "value2"; 
      Validator.ValidateProperty(value, validatorPropContext); 
      this._value2 = value; 
     } 
    } 


    [System.Xml.Serialization.XmlElementAttribute("value4", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    [System.ComponentModel.DataAnnotations.RangeAttribute(5, 6)] 
    public List<int> value4 
    { 
     get 
     { 
      return this._value4; 
     } 
     set 
     { 
      System.ComponentModel.DataAnnotations.ValidationContext validatorPropContext = new System.ComponentModel.DataAnnotations.ValidationContext(this, null, null); 
      validatorPropContext.MemberName = "value4"; 
      Validator.ValidateProperty(value, validatorPropContext); 
      this._value4 = value; 
     } 
    }