XsdDataContractImporter Klasa

Definicja

Umożliwia przekształcenie zestawu plików schematu XML (xsd) na typy środowiska uruchomieniowego języka wspólnego (CLR).

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

Przykłady

Poniższy przykład tworzy metodę XmlSchemaSet i wywołuje metodę Import w celu utworzenia CodeCompileUnitklasy . Element CodeCompileUnit jest następnie używany do tworzenia plików kodu Visual C# i Visual Basic.

using System;
using System.CodeDom.Compiler;
using System.CodeDom;
using System.Runtime.Serialization;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using System.Globalization;

namespace XsdContractImporterExample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                XmlSchemaSet schemas = Export();
                CodeCompileUnit ccu = Import(schemas);
                CompileCode(ccu, "Person.cs");
                CompileCode(ccu, "Person.vb");
            }
            catch (Exception exc)
            {
                Console.WriteLine("{0}: {1}", exc.Message, exc.StackTrace);
            }
            finally
            {
                Console.WriteLine("Press <Enter> to end....");
                Console.ReadLine();
            }
        }

        static XmlSchemaSet Export()
        {
            XsdDataContractExporter ex = new XsdDataContractExporter();
            ex.Export(typeof(Person));
            return ex.Schemas;
        }
        static CodeCompileUnit Import(XmlSchemaSet schemas)
        {

            XsdDataContractImporter imp = new XsdDataContractImporter();

            // The EnableDataBinding option adds a RaisePropertyChanged method to
            // the generated code. The GenerateInternal causes code access to be
            // set to internal.
            ImportOptions iOptions = new ImportOptions();
            iOptions.EnableDataBinding = true;
            iOptions.GenerateInternal = true;
            imp.Options = iOptions;

            if (imp.CanImport(schemas))
            {
                imp.Import(schemas);
                return imp.CodeCompileUnit;
            }
            else
            {
                return null;
            }
        }
        static void CompileCode(CodeCompileUnit ccu, string sourceName)
        {
            CodeDomProvider provider = null;
            FileInfo sourceFile = new FileInfo(sourceName);
            // Select the code provider based on the input file extension, either C# or Visual Basic.
            if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
            {
                provider = new Microsoft.CSharp.CSharpCodeProvider();
            }
            else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
            {
                provider = new Microsoft.VisualBasic.VBCodeProvider();
            }
            else
            {
                Console.WriteLine("Source file must have a .cs or .vb extension");
            }
            if (provider != null)
            {
                CodeGeneratorOptions options = new CodeGeneratorOptions();
                // Set code formatting options to your preference.
                options.BlankLinesBetweenMembers = true;
                options.BracingStyle = "C";

                StreamWriter sw = new StreamWriter(sourceName);
                provider.GenerateCodeFromCompileUnit(ccu, sw, options);
                sw.Close();
            }
        }
    }

    [DataContract]
    public class Person
    {
        [DataMember]
        public string FirstName;

        [DataMember]
        public string LastName;

        public Person(string newFName, string newLName)
        {
            FirstName = newFName;
            LastName = newLName;
        }
    }
}
Imports System.CodeDom.Compiler
Imports System.CodeDom
Imports System.Runtime.Serialization
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports System.Globalization

Class Program
   
    Shared Sub Main(ByVal args() As String) 
        Try
            Dim schemas As XmlSchemaSet = Export()
            Dim ccu As CodeCompileUnit = Import(schemas)
            CompileCode(ccu, "Person.cs")
            CompileCode(ccu, "Person.vb")
        Catch exc As Exception
            Console.WriteLine("{0}: {1}", exc.Message, exc.StackTrace)
        Finally
            Console.WriteLine("Press <Enter> to end....")
            Console.ReadLine()
        End Try
    
    End Sub 
    
    Shared Function Export() As XmlSchemaSet 
        Dim ex As New XsdDataContractExporter()
        ex.Export(GetType(Person))
        Return ex.Schemas
    End Function
    Shared Function Import(ByVal schemas As XmlSchemaSet) As CodeCompileUnit 

        Dim imp As New XsdDataContractImporter()
       ' The EnableDataBinding option adds a RaisePropertyChanged method to
       ' the generated code. The GenerateInternal causes code access to be
       ' set to internal.
       Dim iOptions As New ImportOptions()
       iOptions.EnableDataBinding = true
       iOptions.GenerateInternal = true
       imp.Options = IOptions

        If imp.CanImport(schemas) Then
            imp.Import(schemas)
            Return imp.CodeCompileUnit
        Else
            Return Nothing
        End If
    End Function

    Shared Sub CompileCode(ByVal ccu As CodeCompileUnit, ByVal sourceName As String) 
        Dim provider As CodeDomProvider = Nothing
        Dim sourceFile As New FileInfo(sourceName)
        ' Select the code provider based on the input file extension, either C# or Visual Basic.
        If sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".CS" Then
            provider = New Microsoft.CSharp.CSharpCodeProvider()
        ElseIf sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".VB" Then
            provider = New Microsoft.VisualBasic.VBCodeProvider()
        Else
            Console.WriteLine("Source file must have a .cs or .vb extension")
        End If
        If Not (provider Is Nothing) Then
            Dim options As New CodeGeneratorOptions()
            ' Set code formatting options to your preference. 
            options.BlankLinesBetweenMembers = True
            options.BracingStyle = "C"
            
            Dim sw As New StreamWriter(sourceName)
            provider.GenerateCodeFromCompileUnit(ccu, sw, options)
            sw.Close()
        End If
    
    End Sub
End Class

<DataContract()>  _
Public Class Person
    <DataMember()>  _
    Public FirstName As String
    
    <DataMember()>  _
    Public LastName As String
    
    
    Public Sub New(ByVal newFName As String, ByVal newLName As String) 
        FirstName = newFName
        LastName = newLName
    
    End Sub 
End Class

Uwagi

Użyj elementu XsdDataContractImporter , jeśli tworzysz usługę sieci Web, która musi współdziałać z istniejącą usługą sieci Web lub tworzyć typy kontraktów danych na podstawie schematów XML. XsdDataContractImporterPrzekształci zestaw schematów XML i utworzy typy .NET Framework reprezentujące kontrakt danych w wybranym języku programowania. Aby utworzyć kod, użyj klas w System.CodeDom przestrzeni nazw.

Z drugiej strony należy użyć XsdDataContractExporter klasy podczas tworzenia usługi sieci Web, która zawiera dane reprezentowane przez typy CLR i gdy konieczne jest wyeksportowanie schematów XML dla każdego typu danych, które mają być używane przez inne usługi sieci Web. Oznacza to, że XsdDataContractExporter przekształca zestaw typów CLR w zestaw schematów XML.

Uwaga

Aby wygenerować typy CLR na podstawie schematów XML w czasie projektowania, użyj narzędzia ServiceModel Metadata Tool (Svcutil.exe). Aby wygenerować kod z plików XSD, użyj /dataContractOnly przełącznika narzędzia. Możesz również użyć elementu XsdDataContractImporter , jeśli potrzebujesz większej kontroli nad procesem lub trzeba to zrobić programowo.

Konstruktory

XsdDataContractImporter()

Inicjuje nowe wystąpienie klasy XsdDataContractImporter.

XsdDataContractImporter(CodeCompileUnit)

Inicjuje XsdDataContractImporter nowe wystąpienie klasy za CodeCompileUnit pomocą klasy , która będzie służyć do generowania kodu CLR.

Właściwości

CodeCompileUnit

Pobiera element CodeCompileUnit używany do przechowywania wygenerowanych typów CLR.

Options

Pobiera lub ustawia element ImportOptions zawierający opcje ustawialne dla operacji importowania.

Metody

CanImport(XmlSchemaSet)

Pobiera wartość wskazującą, czy schematy zawarte w obiekcie XmlSchemaSet można przekształcić w CodeCompileUnitobiekt .

CanImport(XmlSchemaSet, ICollection<XmlQualifiedName>)

Pobiera wartość wskazującą, czy określony zestaw typów zawartych w obiekcie XmlSchemaSet można przekształcić w typy CLR wygenerowane w element CodeCompileUnit.

CanImport(XmlSchemaSet, XmlQualifiedName)

Pobiera wartość wskazującą, czy schematy zawarte w obiekcie XmlSchemaSet można przekształcić w CodeCompileUnitobiekt .

CanImport(XmlSchemaSet, XmlSchemaElement)

Pobiera wartość wskazującą, czy można zaimportować określony element schematu XmlSchemaSet .

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetCodeTypeReference(XmlQualifiedName)

Zwraca wartość typu CodeTypeReference do typu CLR wygenerowanego dla typu schematu z określonym XmlQualifiedName.

GetCodeTypeReference(XmlQualifiedName, XmlSchemaElement)

Zwraca element CodeTypeReference dla określonego kwalifikowanego elementu XML i elementu schematu.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetKnownTypeReferences(XmlQualifiedName)

Zwraca listę CodeTypeReference obiektów reprezentujących znane typy wygenerowane podczas generowania kodu dla określonego typu schematu.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Import(XmlSchemaSet)

Przekształca określony zestaw schematów XML zawartych w obiekcie w XmlSchemaSet element CodeCompileUnit.

Import(XmlSchemaSet, ICollection<XmlQualifiedName>)

Przekształca określony zestaw typów schematów zawartych w XmlSchemaSet typach CLR wygenerowanych w element CodeCompileUnit.

Import(XmlSchemaSet, XmlQualifiedName)

Przekształca określony typ schematu XML zawartego w obiekcie w XmlSchemaSet element CodeCompileUnit.

Import(XmlSchemaSet, XmlSchemaElement)

Przekształca określony element schematu w zestawie określonych schematów XML w CodeCompileUnit element i zwraca wartość reprezentującą XmlQualifiedName nazwę kontraktu danych dla określonego elementu.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też