【问题标题】:Pascal case class names when generating code with Visual Studio xsd.exe使用 Visual Studio xsd.exe 生成代码时的 Pascal 案例类名称
【发布时间】:2011-05-09 13:46:11
【问题描述】:

标题几乎说明了一切。 VS xsd.exe 以驼峰形式创建类。有没有办法在帕斯卡案例中生成类?

如果没有,是否有人知道将大量类名从骆驼大小写转换为帕斯卡大小写的好工具。

谢谢

编辑:

xsd.exe 不会在驼峰式中生成类名作为标准 - 它只是遵循架构的约定 - 但是,我有兴趣覆盖此行为,因此 XmlElement 名称属性仍将遵循架构定义的约定, 但类名是帕斯卡大小写。

【问题讨论】:

    标签: c# .net xsd.exe


    【解决方案1】:

    我不知道 xsd.exe 是这样做的,您确定架构中的类型也没有在 camelCase 中定义吗?

    我的建议是使用xsd2code,它在各方面都远优于xsd.exe..

    【讨论】:

    • 架构中的类型是驼峰式的 - 但这是标准的 xml 做法吗?我看到的大多数 xml 都倾向于采用驼峰式大小写 - 因此,如果它自动使用 pascal 大小写会很好,就像 .NET 语言中的标准做法一样。可以按照我在 xsd2code 中的要求做吗?
    • 这不是标准做法,但它很常见 (stackoverflow.com/questions/442529/…)。我认为 xsd2code 不会开箱即用地转换为 PascalCase,这使您的选择略有不足……第一个选择是在您的模式中采用 PascalCase。第二种选择是针对您的模式运行 XSLT 样式表,将名称更改为 PascalCase。第三种选择是对生成的 C# 代码进行自动重构。没有一个选项特别有吸引力!对不起,我不能帮助你更多..
    • 关于第二个选项 (XSLT),有一个将标识符转换为 PascalCase 的函数 - xsltsl.sourceforge.net/string.html#template.str:to-camelcase(请注意,在 XSLT 中它被称为 UpperCamelCase 或 TitleCase)。尽管如此,必须通过样式表运行模式仍然很痛苦:(
    • 我无法更改架构,恐怕它是我正在与之交互的外部 API - 我可能会编写一个自动执行此操作的控制台应用程序 - 或者我可能会再次让它保持工作状态: ) 无论如何感谢您的帮助
    • 我在 xsd2code 论坛上提出了功能建议 > xsd2code.codeplex.com/discussions/256920
    【解决方案2】:

    查看XmlSchemaClassGenerator,这是一个开源控制台应用程序,其中包括 PascalCasing。 (我是在 xsd2code 15 天试用期到期后发现的。)

    • 显式地或通过(可配置的)函数将 XML 命名空间映射到 C# 命名空间
    • 从模式注释生成 C# XML cmets
    • 生成DataAnnotations 来自架构限制的属性
    • 使用Collection<T> 属性(在构造函数中初始化并使用私有设置器)
    • 对 xs:integer 和派生类型使用 int、long、decimal 或 string
    • 自动属性
    • 类和属性的 Pascal 案例
    • 为没有默认值的可选元素和属性生成可为空的适配器属性(见下文)
    • 对 PCL 的可选支持
    • 可选支持INotifyPropertyChanged

    就我而言,在让控制台应用程序运行之前,我必须修改 xsd 文档以包含 targetNamespace 字段,如下所示:

    原文:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1">
    

    修改:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="gateway" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1">
    

    我的最终用法是这样的:

    XmlSchemaClassGenerator.Console -n "http://www.w3.org/2001/XMLSchema=gateway" -o "C:\{output-folder}" {xsd-file-name}.xsd
    

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多