danfic
danfic

Reputation: 1

XSD2Code++, from XML enum to C# enum with not sequential values

My project uses XSD2Code++ to generate a large amount of C# classes and enums from XSD source files. By default, the tool generates C# enums as in the following example:

From XSD definition:

<simpleType name ="AccessResultsEnum">
  <restriction base="string">
    <enumeration value="Unknown"/>
    <enumeration value="AccessAuthorized"/>
    <enumeration value="AccessNotAuthorized"/>
  </restriction>
</simpleType>

To C# Enum type:

[System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "4.2.0.31")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.mycompany.it/MyProject/StateValues/")]
public enum AccessResultsEnum
{
    /// <remarks/>
    Unknown,
    
    /// <remarks/>
    AccessAuthorized,
    
    /// <remarks/>
    AccessNotAuthorized,
}

Now, I would like to generate a C# enum with custom assigned values like the following one:

public enum AccessResultsEnum
{
    /// <remarks/>
    Unknown = 0,
    
    /// <remarks/>
    AccessAuthorized = 2,
    
    /// <remarks/>
    AccessNotAuthorized = 63,
}

Is there a way to achieve this using XSD2Code++?

I should keep enum as the target C# type but I can change the XSD AccessResultsEnum type definition.

Upvotes: 0

Views: 248

Answers (1)

jdweng
jdweng

Reputation: 34421

Normally I do it with a get/set

    public class Test
    {
        public enum AccessResultsEnum
        {
            /// <remarks/>
            Unknown = 0,
            /// <remarks/>
            AccessAuthorized = 2,
            /// <remarks/>
            AccessNotAuthorized = 63,
        }
        private AccessResultsEnum _AccessResultsEnum { get;set;}
        public string AccessResultsEnum {
            get{ return _AccessResultsEnum.ToString();}
            set{ _AccessResultsEnum =(AccessResultsEnum)Enum.Parse(typeof(AccessResultsEnum), value);}
        }
    }

Upvotes: 0

Related Questions