XPathQueryGenerator.CreateFromDataContractSerializer 方法       
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
根据数据协定创建 XPath。
重载
| CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager) | 通过使用指定的数据协定类型、元数据元素数组和命名空间,根据数据协定创建 XPath。 | 
| CreateFromDataContractSerializer(Type, MemberInfo[], StringBuilder, XmlNamespaceManager) | 通过使用指定的协定数据类型、元数据元素数组、顶级元素和命名空间,根据数据协定创建 XPath。 | 
CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)
通过使用指定的数据协定类型、元数据元素数组和命名空间,根据数据协定创建 XPath。
public:
 static System::String ^ CreateFromDataContractSerializer(Type ^ type, cli::array <System::Reflection::MemberInfo ^> ^ pathToMember, [Runtime::InteropServices::Out] System::Xml::XmlNamespaceManager ^ % namespaces);public static string CreateFromDataContractSerializer (Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * XmlNamespaceManager -> stringPublic Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), ByRef namespaces As XmlNamespaceManager) As String参数
- type
- Type
表示数据协定的类型。
- pathToMember
- MemberInfo[]
- namespaces
- XmlNamespaceManager
在数据协定中找到的 XML 命名空间及其前缀。
返回
根据此类型和成员数据生成的 XPath。
示例
下面的示例通过应用了 DataContractAttribute 和 DataMemberAttribute 特性的两个类创建 XPath 查询。
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
注解
有关数据协定的详细信息,请参阅使用数据协定。
适用于
CreateFromDataContractSerializer(Type, MemberInfo[], StringBuilder, XmlNamespaceManager)
通过使用指定的协定数据类型、元数据元素数组、顶级元素和命名空间,根据数据协定创建 XPath。
public:
 static System::String ^ CreateFromDataContractSerializer(Type ^ type, cli::array <System::Reflection::MemberInfo ^> ^ pathToMember, System::Text::StringBuilder ^ rootElementXpath, [Runtime::InteropServices::Out] System::Xml::XmlNamespaceManager ^ % namespaces);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);static member CreateFromDataContractSerializer : Type * System.Reflection.MemberInfo[] * System.Text.StringBuilder * XmlNamespaceManager -> stringPublic Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), rootElementXpath As StringBuilder, ByRef namespaces As XmlNamespaceManager) As String参数
- type
- Type
表示数据协定的类型。
- pathToMember
- MemberInfo[]
- rootElementXpath
- StringBuilder
xpath 中的顶级元素。
- namespaces
- XmlNamespaceManager
在数据协定中找到的 XML 命名空间及其前缀。
返回
根据此类型和成员数据生成的 XPath。