cap*_*gon 19 .net c# code-generation
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
企业架构师生成以下代码,但Visual Studio不喜欢CD-ROM中的破折号( - ),也不会编译.
public enum PackageMedium : int {
NTP,
DAT,
Exabyte,
CD-ROM,
DLT,
D1,
DVD,
BD,
LTO,
LTO2,
LTO4
}
Run Code Online (Sandbox Code Playgroud)
我能做些什么来完成这项工作?
基于@Craig Stuntz回答我能找到这篇文章,帮助我从Enum中检索这些特殊字符.
Cra*_*ntz 19
你不能.完全停止.但是,有一些解决方法.你可以,例如,使用DescriptionAttribute
:
public enum PackageMedium : int {
NTP,
DAT,
Exabyte,
[Description("CD-ROM")]
CDROM,
DLT,
D1,
DVD,
BD,
LTO,
LTO2,
LTO4
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这意味着在映射值时您还有更多工作要做.另一方面,它至少可以编译.
如果您不喜欢,请选择其他解决方法,例如字典:
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"];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15908 次 |
最近记录: |