【问题标题】:Generate typed(long) Enum using CodeDom/XSD使用 CodeDom/XSD 生成类型化(长)枚举
【发布时间】:2016-10-04 14:42:55
【问题描述】:

对不起这个基本问题(不适合我:))。我想使用 CodeDom/Xsd 生成下面的枚举类型(长)。

public enum Boolean_YN : long
    {

        /// <remarks/>
        Y,

        /// <remarks/>
        N,
    }

这是我的 Xsd 片段

<xs:simpleType name="Boolean_YN">
<xs:restriction base="xs:string">
  <xs:enumeration value="Y" />
  <xs:enumeration value="N" />
</xs:restriction>
</xs:simpleType>

我应该在我的 XSD 中添加什么以使类型(长)出现在我的枚举声明中。

谢谢。

【问题讨论】:

  • 您究竟是如何生成代码的?你在用XmlCodeExporter吗?
  • @svick 是的,我正在使用 XmlCodeExporter。

标签: c# xsd codedom


【解决方案1】:

VSSDK-Extensibility-Samples查看代码

  1. 你需要声明枚举类型

    CodeTypeDeclaration typeDeclaration = new CodeTypeDeclaration("Boolean_YN"); typeDeclaration.IsEnum = true;

  2. 声明枚举成员

    CodeMemberField field = new CodeMemberField("System.Int64", enummemberName); typeDeclaration.Members.Add(field);

请参阅上面的链接以获取有关如何从 XSD 读取 EnumMemberInfo 和 EnumInfo 的更多详细信息。

【讨论】:

  • 我继承的代码没有那么大的灵活性。 Xsd 是由具有限制的 XmlSchemaSimpleTypeRestriction 生成的。Facets.Add(new XmlSchemaEnumerationFacet {Value = "Y"});。我想知道是否使用相同的限制我可以在某处添加一个 long 类型,CodeDom 会翻译。抱歉,我对此很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2015-09-02
  • 1970-01-01
相关资源
最近更新 更多