2012-01-19 77 views
1

BasicTypes.xsd包括以下內容:字典從GML模式枚舉

<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 { 
     -, 
     + 
    } 
} 

Ofcourse,我不能有 - 和+作爲枚舉鍵。所以我的問題是:

我將如何定義一個Dicionary對象來滿足架構,因爲它是?或者,還有更好的方法?請給出代碼示例。

看起來像these people are using an array

回答

1

下面是如何使用字典的示例。字典基本上做的是將一個對象映射到另一個對象,在這種情況下,字符串爲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]; } 
     } 
    } 
} 

這將使'新OGC.GML.BasicTypes.SignType()[「+」]」

即使BasicTypes是一類,而不是一個命名空間,但它仍然有可能把更多的枚舉和子類中,但這可能不是理想的解決方案,具體取決於命名空間的用途。

+0

謝謝,但我知道字典的工作原理。我需要知道如何定義它以符合模式要求。你的方式,它如何與命名空間一起工作?我可以去'OGC.GML.BasicTypes.SignType [「+」]'? – capdragon

+0

我已經更新了包含能夠啓用'OGC.GML.BasicTypes.SignType [「+」]' –

+0

的代碼的帖子。實際上,我不確定我需要什麼,但它必須與模式一致。現在你已經展示了這個例子,我知道這是行不通的,因爲在命名空間OGC.GML.BasicTypes中定義了許多類和類型需要實例化。所以它不能是一個靜態類。我爲收回你的時間而道歉,但如果我知道我在找什麼,我現在就可以做到。我想我需要有人告訴我如何定義它,以便它符合架構要求。 :/ ...但你是正確的你的編輯代碼會產生'OGC.GML.BasicTypes.SignType [「+」]'我錯了想要。 – capdragon