[英]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.