从类导出架构

若要从数据协定模型中使用的类生成 XML 架构定义语言 (XSD) 架构,请使用 XsdDataContractExporter 类。 本主题描述创建架构的过程。

导出过程

架构导出过程以一个或多个类型开始,并生成一个 XmlSchemaSet ,描述这些类型的 XML 投影。

XmlSchemaSet 是 .NET Framework 的架构对象模型 (SOM) 的一部分,SOM 表示 XSD 架构文档集。 若要从 XmlSchemaSet创建 XSD 文档,请使用 Schemas 类的 XmlSchemaSet 属性的架构集合。 然后使用 XmlSchema 序列化每个 XmlSerializer对象。

导出架构

  1. 创建 XsdDataContractExporter 的实例:

  2. 可选。 在构造函数中传递一个 XmlSchemaSet 。 在此情况下,会将架构导出期间生成的架构添加到此 XmlSchemaSet 实例中,而不是以空白 XmlSchemaSet开始。

  3. 可选。 调用 CanExport 方法之一。 该方法确定是否可以导出指定类型。 该方法与下一个步骤中的 Export 方法具有相同的重载。

  4. 调用 Export 方法之一。 有三个重载采用了 TypeList<T> 对象的 Type ,或 List<T> 对象的 Assembly 。 在最后一种情况中,将导出所有给定程序集中的所有类型。

    多次调用 Export 方法将导致多个项被添加到同一个 XmlSchemaSet中。 如果某个类型已经存在于 XmlSchemaSet 中,则不会再在其中生成该类型。 因此,在同一 Export 上多次调用 XsdDataContractExporter 时最好创建 XsdDataContractExporter 类的多个实例。 这可避免生成重复的架构类型。

    注意

    如果导出期间出现故障,则 XmlSchemaSet 将处于不可预知的状态。

  5. 通过 XmlSchemaSet 属性访问 Schemas

导出选项

您可以将 OptionsXsdDataContractExporter 属性设置为 ExportOptions 类的实例以控制导出过程的各个方面。 您可以具体设置以下选项:

帮助器方法

除了具有导出架构的主要作用, XsdDataContractExporter 还具有几个有用的帮助器方法,它们可提供有关类型的信息。 其中包括:

  • GetRootElementName 方法。 此方法采用 Type 并返回表示根元素名称和命名空间的 XmlQualifiedName ,此名称和命名空间可在此类型被序列化为根对象时使用。

  • GetSchemaTypeName 方法。 此方法采用 Type 并返回表示 XSD 架构类型名称的 XmlQualifiedName ,此名称可在此类型导出到架构中时使用。 对于表示架构中匿名类型的 IXmlSerializable 类型,此方法返回 null

  • GetSchemaType 方法。 此方法只能与表示架构中匿名类型的 IXmlSerializable 类型一起使用,并为所有其他类型返回 null 。 对于匿名类型,此方法返回表示给定 XmlSchemaTypeType

导出选项会影响所有这些方法。

另请参阅