簡體   English   中英

XSD2Code++,從 XML 枚舉到 C# 枚舉,沒有順序值

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

我的項目使用XSD2Code++從 XSD 源文件中生成大量的 C# 類和枚舉。 默認情況下,該工具會生成C# 枚舉,如下例所示:

從 XSD 定義:

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

到 C# 枚舉類型:

[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,
}

現在,我想生成一個帶有自定義分配值的 C# 枚舉,如下所示:

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

有沒有辦法使用 XSD2Code++ 來實現這一點?

我應該將enum保留為目標 C# 類型,但我可以更改 XSD AccessResultsEnum類型定義。

通常我用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);}
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM