字典作为枚举
本文关键字:枚举 字典 | 更新日期: 2023-09-27 18:21:00
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 {
-,
+
}
}
当然,我不能用-和+作为枚举键。所以我的问题是:
我该如何定义Dicionary对象来满足模式本身?或者有更好的方法吗请给出代码示例。
看起来这些人在使用一个数组。
以下是如何使用字典的示例。字典的基本功能是将一个对象映射到另一个对象,在这种情况下,从字符串映射到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是一个类而不是命名空间,仍然可以在其中放入更多的枚举和子类,但这可能不是理想的解决方案,具体取决于命名空间的用途。