簡體   English   中英

字典作為枚舉

[英]Dictionary as an Enum

GML模式中的BasicTypes.xsd包括以下內容:

<simpleType name="SignType">
    <annotation>
        <documentation>
        gml:SignType is a convenience type with values "+" (plus) and "-" (minus).
        </documentation>
    </annotation>
    <restriction base="string">
        <enumeration value="-"/>
        <enumeration value="+"/>
    </restriction>
</simpleType>

代碼生成器(sparx企業架構師)正在生成以下內容:

namespace OGC.GML.BasicTypes {
    /// <summary>
    /// gml:SignType is a convenience type with values "+" (plus) and "-" (minus).
    /// </summary>
    public enum SignType : int {
        -,
        +
    }
}

當然,我不能將-和+作為枚舉鍵。 所以我的問題是:

我將如何定義字典對象以滿足其原樣? 或者,還有更好的方法? 請給出代碼示例。

看來這些人正在使用數組

這是如何使用字典的示例。 字典的基本作用是將一個對象映射到另一個對象,在這種情況下,將字符串映射為int,如果願意,可以始終使用不同類型的鍵和值。

        Dictionary<string, int> SignType = new Dictionary<string, int>();
        SignType.Add("-", 0);
        SignType.Add("+", 1);

        int plusValue = SignType["+"];

編輯:我再次更新了它

現在您可以像這樣使用靜態類

namespace OGC.GML.BasicTypes
{
    public static class SignType
    {
        public static Dictionary<string, int> Values = new Dictionary<string, int>();
        static SignType()
        {
            Values.Add("-", 0);
            Values.Add("+", 1);
        }
    }
}

並且您必須鍵入OGC.GML.BasicTypes.SignType.Values["+"]

或者,您可以使用實例類

    public class SignType
    {
        private static Dictionary<string, int> Values = new Dictionary<string, int>();
        public SignType()
        {
            Values.Add("-", 0);
            Values.Add("+", 1);
        }
        public int this[string s]
        {
            get { return Values[s]; }
        }
    }
}

這將允許`new OGC.GML.BasicTypes.SignType()[“ +”]'

即使BasicTypes是類而不是名稱空間,也仍然可以在其中放入更多的Enum和Sub-Class,但這可能不是理想的解決方案,具體取決於名稱空間的用途。

暫無
暫無

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

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