XsdDataContractExporter Klasa

Definicja

Umożliwia przekształcenie zestawu typów .NET, które są używane w kontraktach danych do pliku schematu XML (XSD).Allows the transformation of a set of .NET types that are used in data contracts into an XML schema file (.xsd).

public ref class XsdDataContractExporter
public class XsdDataContractExporter
type XsdDataContractExporter = class
Public Class XsdDataContractExporter
Dziedziczenie
XsdDataContractExporter

Przykłady

Poniższy przykład tworzy wystąpienie XsdDataContractExporter i wywołuje Export(Type) metodę.The following example creates an instance of the XsdDataContractExporter and calls the Export(Type) method.

using System;
using System.Xml;
using System.Runtime.Serialization;
using System.Xml.Schema;

public class Program
{
    public static void Main()
    {
        try
        {
            ExportXSD();
        }
        catch (Exception exc)
        {
            Console.WriteLine("Message: {0} StackTrace:{1}", exc.Message, exc.StackTrace);
        }
        finally
        {
            Console.ReadLine();
        }
    }

    static void ExportXSD()
    {
        XsdDataContractExporter exporter = new XsdDataContractExporter();
        if (exporter.CanExport(typeof(Employee)))
        {
            exporter.Export(typeof(Employee));
            Console.WriteLine("number of schemas: {0}", exporter.Schemas.Count);
            Console.WriteLine();
            XmlSchemaSet mySchemas = exporter.Schemas;

            XmlQualifiedName XmlNameValue = exporter.GetRootElementName(typeof(Employee));
            string EmployeeNameSpace = XmlNameValue.Namespace;

            foreach (XmlSchema schema in mySchemas.Schemas(EmployeeNameSpace))
            {
                schema.Write(Console.Out);
            }
        }
    }

    static void GetXmlElementName()
    {
        XsdDataContractExporter myExporter = new XsdDataContractExporter();
        XmlQualifiedName xmlElementName =myExporter.GetRootElementName(typeof(Employee));
        Console.WriteLine("Namespace: {0}", xmlElementName.Namespace);
        Console.WriteLine("Name: {0}", xmlElementName.Name);
        Console.WriteLine("IsEmpty: {0}", xmlElementName.IsEmpty);
    }

    [DataContract(Namespace = "www.Contoso.com/Examples/")]
    public class Employee
    {
        [DataMember]
        public string EmployeeName;
        [DataMember]
        private string ID;
    }
}
Imports System.Collections
Imports System.Xml
Imports System.Runtime.Serialization
Imports System.Xml.Schema

Public Class Program
    Public Shared Sub Main() 
        Try
            ExportXSD()
        Catch exc As Exception
            Console.WriteLine("Message: {0} StackTrace:{1}", exc.Message, exc.StackTrace)
        Finally
            Console.ReadLine()
        End Try
    
    End Sub 
    
    
    Shared Sub ExportXSD() 

        Dim exporter As New XsdDataContractExporter()

        ' Use the ExportOptions to add the Possessions type to the 
        ' collection of KnownTypes. 
        Dim eOptions As New ExportOptions()
        eOptions.KnownTypes.Add(GetType(Possessions))        
        exporter.Options = eOptions

        If exporter.CanExport(GetType(Employee)) Then
            exporter.Export(GetType(Employee))
            Console.WriteLine("number of schemas: {0}", exporter.Schemas.Count)
            Console.WriteLine()
            Dim mySchemas As XmlSchemaSet = exporter.Schemas
            
            Dim XmlNameValue As XmlQualifiedName = _
               exporter.GetRootElementName(GetType(Employee))
            Dim EmployeeNameSpace As String = XmlNameValue.Namespace
            
            Dim schema As XmlSchema
            For Each schema In  mySchemas.Schemas(EmployeeNameSpace)
                schema.Write(Console.Out)
            Next schema
        End If
    
    End Sub 
    
    
    Shared Sub GetXmlElementName() 
        Dim myExporter As New XsdDataContractExporter()
        Dim xmlElementName As XmlQualifiedName = myExporter. _
            GetRootElementName(GetType(Employee))
        Console.WriteLine("Namespace: {0}", xmlElementName.Namespace)
        Console.WriteLine("Name: {0}", xmlElementName.Name)
        Console.WriteLine("IsEmpty: {0}", xmlElementName.IsEmpty)
    
    End Sub 
    
    <DataContract([Namespace] := "www.Contoso.com/Examples/")>  _
    Public Class Employee

        <DataMember()>  _
        Public EmployeeName As String
        <DataMember()>  _
        Private ID As String
        ' This member may return a Possessions type.
        <DataMember> _
        public Miscellaneous As Hashtable 

    End Class 

    <DataContract> _
    Public Class Possessions

        <DataMember> _
        Public ItemName As String
    End Class

End Class

Uwagi

Użyj XsdDataContractExporter klasy, gdy utworzono usługę sieci Web, która zawiera dane reprezentowane przez typy środowiska uruchomieniowego języka wspólnego (CLR) i kiedy trzeba wyeksportować schematy XML dla każdego typu, który ma być używany przez inne usługi sieci Web.Use the XsdDataContractExporter class when you have created a Web service that incorporates data represented by common language runtime (CLR) types and when you need to export XML schemas for each type to be consumed by other Web services. Oznacza to, że program XsdDataContractExporter przekształca zestaw typów CLR w schematy XML.That is, XsdDataContractExporter transforms a set of CLR types into XML schemas. (Aby uzyskać więcej informacji na temat typów, które mogą być używane, zobacz Typy obsługiwane przez serializator kontraktu danych). Schematy można następnie udostępnić za pomocą dokumentu Web Services Description Language (WSDL) do użycia przez inne osoby, które muszą współpracować z usługą.(For more information about the types that can be used, see Types Supported by the Data Contract Serializer.) The schemas can then be exposed through a Web Services Description Language (WSDL) document for use by others who need to interoperate with your service.

Z drugiej strony, jeśli tworzysz usługę sieci Web, która musi współdziałać z istniejącą usługą sieci Web, użyj XsdDataContractImporter do przekształcenia schematów XML i utworzenia typów CLR, które reprezentują dane w wybranym języku programowania.Conversely, if you are creating a Web service that must interoperate with an existing Web service, use the XsdDataContractImporter to transform XML schemas and create the CLR types that represent the data in a selected programming language.

XsdDataContractExporterGeneruje XmlSchemaSet obiekt, który zawiera kolekcję schematów.The XsdDataContractExporter generates an XmlSchemaSet object that contains the collection of schemas. Dostęp do zestawu schematów za pomocą Schemas właściwości.Access the set of schemas through the Schemas property.

Uwaga

Aby szybko generować pliki definicji schematu XML (XSD), których mogą używać inne usługi sieci Web, użyj XsdDataContractExporter .To quickly generate XML schema definition (XSD) files that other Web services can consume, use the XsdDataContractExporter.

Eksportowanie schematów do elementu XmlSchemaSetExporting Schemas Into an XmlSchemaSet

Aby utworzyć wystąpienie klasy zawierającej XmlSchemaSet pliki schematu XML, należy pamiętać o następujących kwestiach.To create an instance of the XmlSchemaSet class that contains XML schema files, you should be aware of the following.

Zestaw typów, które są eksportowane, jest rejestrowany jako wewnętrzny zestaw umów dotyczących danych.The set of types you are exporting are recorded as an internal set of data contracts. W związku z tym można wywołać CanExport metodę wiele razy, aby dodać nowe typy do zestawu schematów bez obniżenia wydajności, ponieważ tylko nowe typy zostaną dodane do zestawu.Thus, you can call the CanExport method multiple times to add new types to the schema set without degrading performance because only the new types will be added to the set. Podczas Export operacji istniejące schematy są porównywane z nowymi dodawanymi schematami.During the Export operation, the existing schemas are compared to the new schemas being added. Jeśli wystąpią konflikty, zostanie zgłoszony wyjątek.If there are conflicts, an exception will be thrown. Konflikt jest zwykle wykrywany w przypadku, gdy dwa typy o takiej samej nazwie kontraktu danych, ale różne kontrakty (różne składowe) są eksportowane przez to samo XsdDataContractExporter wystąpienie.A conflict is usually detected if two types with the same data contract name but different contracts (different members) are exported by the same XsdDataContractExporter instance.

Korzystanie z eksportuUsing the Exporter

Zalecanym sposobem korzystania z tej klasy jest:A recommended way of using this class is as follows:

  1. Użyj jednego z CanExport przeciążeń, aby określić, czy można eksportować określony typ lub zestaw typów.Use one of the CanExport overloads to determine whether the specified type or set of types can be exported. Użyj jednego z przeciążeń, które są odpowiednie dla Twoich wymagań.Use one of the overloads that is appropriate to your requirements.

  2. Wywołaj odpowiednią Export metodę.Call the corresponding Export method.

  3. Pobierz schematy z Schemas właściwości.Retrieve the schemas from the Schemas property.

Konstruktory

XsdDataContractExporter()

Inicjuje nowe wystąpienie klasy XsdDataContractExporter.Initializes a new instance of the XsdDataContractExporter class.

XsdDataContractExporter(XmlSchemaSet)

Inicjuje nowe wystąpienie XsdDataContractExporter klasy z określonym zestawem schematów.Initializes a new instance of the XsdDataContractExporter class with the specified set of schemas.

Właściwości

Options

Pobiera lub ustawia element ExportOptions , który zawiera opcje, które można ustawić dla operacji eksportowania.Gets or sets an ExportOptions that contains options that can be set for the export operation.

Schemas

Pobiera kolekcję eksportowanych schematów XML.Gets the collection of exported XML schemas.

Metody

CanExport(ICollection<Assembly>)

Pobiera wartość wskazującą, czy zestaw typów plików środowiska uruchomieniowego języka wspólnego (CLR) zawartych w zestawie zestawów można eksportować.Gets a value that indicates whether the set of .common language runtime (CLR) types contained in a set of assemblies can be exported.

CanExport(ICollection<Type>)

Pobiera wartość wskazującą, czy zestaw typów środowiska uruchomieniowego języka wspólnego (CLR) zawartych w elemencie ICollection<T> można wyeksportować.Gets a value that indicates whether the set of .common language runtime (CLR) types contained in a ICollection<T> can be exported.

CanExport(Type)

Pobiera wartość wskazującą, czy można eksportować określony typ środowiska uruchomieniowego języka wspólnego (CLR).Gets a value that indicates whether the specified common language runtime (CLR) type can be exported.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Export(ICollection<Assembly>)

Przekształca typy zawarte w określonej kolekcji zestawów.Transforms the types contained in the specified collection of assemblies.

Export(ICollection<Type>)

Przekształca typy zawarte w ICollection<T> przekazaniu do tej metody.Transforms the types contained in the ICollection<T> passed to this method.

Export(Type)

Przekształca określony typ .NET Framework w schemat języka definicji schematu XML (XSD).Transforms the specified .NET Framework type into an XML schema definition language (XSD) schema.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetRootElementName(Type)

Zwraca nazwę i przestrzeń nazw najwyższego poziomu dla Type .Returns the top-level name and namespace for the Type.

GetSchemaType(Type)

Zwraca typ schematu XML dla określonego typu.Returns the XML schema type for the specified type.

GetSchemaTypeName(Type)

Zwraca nazwę kontraktu i przestrzeń nazw kontraktu dla Type .Returns the contract name and contract namespace for the Type.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też