gpt4 book ai didi

c# - 我怎样才能让枚举包含破折号(-)?

转载 作者:IT王子 更新时间:2023-10-29 04:48:56 26 4
gpt4 key购买 nike

我正在从 this schema 生成业务对象使用 Enterprise Architect。

架构具有以下枚举规范:

<xs:simpleType name="PackageMedium">
<xs:restriction base="xs:string">
<xs:enumeration value="NTP"/>
<xs:enumeration value="DAT"/>
<xs:enumeration value="Exabyte"/>
<xs:enumeration value="CD-ROM"/>
<xs:enumeration value="DLT"/>
<xs:enumeration value="D1"/>
<xs:enumeration value="DVD"/>
<xs:enumeration value="BD"/>
<xs:enumeration value="LTO"/>
<xs:enumeration value="LTO2"/>
<xs:enumeration value="LTO4"/>
</xs:restriction>
</xs:simpleType>

企业架构师生成以下代码,但 Visual Studio 不喜欢 CD-ROM 中的破折号 (-),因此无法编译。

public enum PackageMedium : int {
NTP,
DAT,
Exabyte,
CD-ROM,
DLT,
D1,
DVD,
BD,
LTO,
LTO2,
LTO4
}

我该怎么做才能使这项工作正常进行?


基于@Craig Stuntz 的回答,我找到了 this article这帮助我从枚举中检索了这些特殊字符。

最佳答案

你不能。句号。但是,有一些解决方法。例如,您可以使用 DescriptionAttribute:

public enum PackageMedium : int {
NTP,
DAT,
Exabyte,
[Description("CD-ROM")]
CDROM,
DLT,
D1,
DVD,
BD,
LTO,
LTO2,
LTO4
}

不幸的是,这意味着您在映射值时需要做更多的工作。另一方面,它至少可以编译。

如果您不喜欢这样,请选择其他解决方法,例如字典:

var dict = Enum.GetValues(typeof(PackageMedium))
.Cast<PackageMedium>()
.Select(v => Tuple.Create(v == PackageMedium.CDROM ? "CD-ROM" : v.ToString(), v))
.ToDictionary(t => t.Item1, t => t.Item2);

var myEnumVal = dict["CD-ROM"];

关于c# - 我怎样才能让枚举包含破折号(-)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com