XPathQueryGenerator.CreateFromDataContractSerializer Methode

Definition

Erstellt einen XPath aus einem Datenvertrag.

Überlädt

Name Beschreibung
CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

Erstellt einen XPath aus einem Datenvertrag mithilfe des angegebenen Datentyps, des Arrays von Metadatenelementen und Namespaces.

CreateFromDataContractSerializer(Type, MemberInfo[], StringBuilder, XmlNamespaceManager)

Erstellt einen XPath aus einem Datenvertrag mithilfe des angegebenen Vertragsdatentyps, arrays von Metadatenelementen, dem Element der obersten Ebene und Namespaces.

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs

Erstellt einen XPath aus einem Datenvertrag mithilfe des angegebenen Datentyps, des Arrays von Metadatenelementen und Namespaces.

public:
 static System::String ^ CreateFromDataContractSerializer(Type ^ type, cli::array <System::Reflection::MemberInfo ^> ^ pathToMember, [Runtime::InteropServices::Out] System::Xml::XmlNamespaceManager ^ % namespaces);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")>]
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * XmlNamespaceManager -> string
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * XmlNamespaceManager -> string
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")>]
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * XmlNamespaceManager -> string
Public Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), ByRef namespaces As XmlNamespaceManager) As String

Parameter

type
Type

Der Typ, der einen Datenvertrag darstellt.

pathToMember
MemberInfo[]

Die mithilfe der GetMember Methode der Type Klasse generierten Metadaten, die auf das spezifische Datenmemm, das zum Generieren der Abfrage verwendet wird, verweist.

namespaces
XmlNamespaceManager

Die XML-Namespaces und deren Präfixe im Datenvertrag.

Gibt zurück

String

Der XPath, der aus den Typ- und Memberdaten generiert wurde.

Attribute

Beispiele

Im folgenden Beispiel werden XPath-Abfragen aus zwei Klassen erstellt, auf die und DataContractAttributeDataMemberAttribute die Attribute angewendet wurden.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Runtime.Serialization;
using System.Xml;

namespace GeneratPathExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the type of the class that defines the data contract.
            Type t = typeof(Order);

            // Get the meta data for the specific members to be used in the query.
            MemberInfo[] mi = t.GetMember("Product");
            MemberInfo[] mi2 = t.GetMember("Value");
            MemberInfo[] mi3 = t.GetMember("Quantity");

            // Call the function below to generate and display the query.
            GenerateXPath(t, mi);
            GenerateXPath(t, mi2);
            GenerateXPath(t, mi3);

            // Get the type of the second class that defines a data contract.
            Type t2 = typeof(Line);

            // Get the meta data for the member to be used in the query.
            MemberInfo[] mi4 = t2.GetMember("Items");

            GenerateXPath(t2, mi4);

            Console.ReadLine();
        }

        static void GenerateXPath(Type t, MemberInfo[] mi)
        {

            // Create a new name table and name space manager.
            NameTable nt = new NameTable();
            XmlNamespaceManager xname = new XmlNamespaceManager(nt);

            // Generate the query and print it.
            string query = XPathQueryGenerator.CreateFromDataContractSerializer(
                t, mi, out xname);
            Console.WriteLine(query);
            Console.WriteLine();

            // Display the namespaces and prefixes used in the data contract.
            foreach (string s in xname)
                Console.WriteLine("{0}  = {1}", s, xname.LookupNamespace(s));

            Console.WriteLine();
        }
    }

    [DataContract(Namespace = "http://www.cohowinery.com/")]
    public class Line
    {
        private Order[] itemsValue;

        [DataMember]
        public Order[] Items
        {
            get { return itemsValue; }
            set { itemsValue = value; }
        }
    }

    [DataContract(Namespace = "http://contoso.com")]
    public class Order
    {
        private string productValue;
        private int quantityValue;
        private decimal valueValue;

        [DataMember(Name = "cost")]
        public decimal Value
        {
            get { return valueValue; }
            set { valueValue = value; }
        }

        [DataMember(Name = "quantity")]
        public int Quantity
        {
            get { return quantityValue; }
            set { quantityValue = value; }
        }

        [DataMember(Name = "productName")]
        public string Product
        {
            get { return productValue; }
            set { productValue = value; }
        }
    }
}
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Reflection
Imports System.Runtime.Serialization
Imports System.Xml

Namespace GeneratPathExample

    Class Program

        Shared Sub Main(ByVal args As String())

            ' Get the type of the class that defines the data contract.
            Dim t As Type = GetType(Order)

            ' Get the meta data for the specific members to be used in the query.
            Dim mi As MemberInfo() = t.GetMember("Product")
            Dim mi2 As MemberInfo() = t.GetMember("Value")
            Dim mi3 As MemberInfo() = t.GetMember("Quantity")

            ' Call the function below to generate and display the query.
            GenerateXPath(t, mi)
            GenerateXPath(t, mi2)
            GenerateXPath(t, mi3)


            ' Get the type of the second class that defines a data contract.
            Dim t2 As Type = GetType(Line)

            ' Get the meta data for the member to be used in the query.
            Dim mi4 As MemberInfo() = t2.GetMember("Items")

            GenerateXPath(t2, mi4)

            Console.ReadLine()
        End Sub

        Shared Sub GenerateXPath(ByVal t As Type, ByVal mi As MemberInfo())


            ' Create a new name table and name space manager.
            Dim nt As New NameTable()
            Dim xname As New XmlNamespaceManager(nt)


            ' Generate the query and print it.
            Dim query As String = XPathQueryGenerator.CreateFromDataContractSerializer( _
                t, mi, xname)
            Console.WriteLine(query)
            Console.WriteLine()


            ' Display the namespaces and prefixes used in the data contract.
            Dim s As String
            For Each s In xname
                Console.WriteLine("{0}  = {1}", s, xname.LookupNamespace(s))
            Next

            Console.WriteLine()

        End Sub
    End Class


    <DataContract(Namespace:="http://www.cohowinery.com/")> _
        Public Class Line

        Private itemsValue As Order()

        <DataMember()>
        Public Property Item() As Order()

            Get
                Return itemsValue
            End Get
            Set(ByVal value As Order())
                itemsValue = value
            End Set
        End Property

    End Class

    <DataContract(Namespace:="http://contoso.com")> _
    Public Class Order

        Private productValue As String
        Private quantityValue As Integer
        Private valueValue As Decimal

        <DataMember(Name:="cost")>
        Public Property Value() As String

            Get
                Return valueValue
            End Get
            Set(ByVal value As String)
                valueValue = value
            End Set
        End Property

        <DataMember(Name:="quantity")> _
        Public Property Quantity() As Integer

            Get
                Return quantityValue
            End Get
            set(ByVal value As Integer)
                quantityValue = value
            End Set
        End Property


        <DataMember(Name:="productName")> _
        Public Property Product() As String

            Get
                Return productValue
            End Get
            Set(ByVal value As String)
                productValue = value
            End Set
        End Property
    End Class
End Namespace

Hinweise

Weitere Informationen zu Datenverträgen finden Sie unter Verwenden von Datenverträgen.

Gilt für:

CreateFromDataContractSerializer(Type, MemberInfo[], StringBuilder, XmlNamespaceManager)

Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs
Quelle:
XPathQueryGenerator.cs

Erstellt einen XPath aus einem Datenvertrag mithilfe des angegebenen Vertragsdatentyps, arrays von Metadatenelementen, dem Element der obersten Ebene und Namespaces.

public:
 static System::String ^ CreateFromDataContractSerializer(Type ^ type, cli::array <System::Reflection::MemberInfo ^> ^ pathToMember, System::Text::StringBuilder ^ rootElementXpath, [Runtime::InteropServices::Out] System::Xml::XmlNamespaceManager ^ % namespaces);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder? rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder? rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")]
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder? rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);
public static string CreateFromDataContractSerializer(Type type, System.Reflection.MemberInfo[] pathToMember, System.Text.StringBuilder rootElementXpath, out System.Xml.XmlNamespaceManager namespaces);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")>]
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * System.Text.StringBuilder * XmlNamespaceManager -> string
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * System.Text.StringBuilder * XmlNamespaceManager -> string
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Data Contract Serialization and Deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved.")>]
static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * System.Text.StringBuilder * XmlNamespaceManager -> string
Public Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), rootElementXpath As StringBuilder, ByRef namespaces As XmlNamespaceManager) As String

Parameter

type
Type

Der Typ, der einen Datenvertrag darstellt.

pathToMember
MemberInfo[]

Die mithilfe der GetMember Methode der Type Klasse generierten Metadaten, die auf das spezifische Datenmemm, das zum Generieren der Abfrage verwendet wird, verweist.

rootElementXpath
StringBuilder

Das Element der obersten Ebene im xpath.the top level element in the xpath.

namespaces
XmlNamespaceManager

Die XML-Namespaces und deren Präfixe im Datenvertrag.

Gibt zurück

String

Der XPath, der aus den Typ- und Memberdaten generiert wurde.

Attribute

Gilt für: