Прочитать на английском

Поделиться через


XPathQueryGenerator.CreateFromDataContractSerializer Метод

Определение

Создает XPath из контракта данных.

Перегрузки

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

Создает XPath из контракта данных, используя заданный тип контракта данных, массив элементов метаданных и пространства имен.

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

Создает XPath из контракта данных, используя заданный тип контракта данных, массив элементов метаданных, элемент верхнего уровня и пространства имен.

CreateFromDataContractSerializer(Type, MemberInfo[], XmlNamespaceManager)

Исходный код:
XPathQueryGenerator.cs
Исходный код:
XPathQueryGenerator.cs
Исходный код:
XPathQueryGenerator.cs

Создает XPath из контракта данных, используя заданный тип контракта данных, массив элементов метаданных и пространства имен.

public static string CreateFromDataContractSerializer (Type type, System.Reflection.MemberInfo[] pathToMember, out System.Xml.XmlNamespaceManager namespaces);

Параметры

type
Type

Тип, представляющий контракт данных.

pathToMember
MemberInfo[]

Метаданные, сформированные с использованием метода GetMember класса Type, указывающего определенный элемент данных, использованный для формирования запроса.

namespaces
XmlNamespaceManager

Пространства имен XML и их префиксы, встречающиеся в контракте данных.

Возвращаемое значение

String

XPath, созданный из типа и данных члена.

Примеры

В следующем примере созданы запросы XPath из двух классов, к которым были применены атрибуты DataContractAttribute и DataMemberAttribute.

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; }
        }
    }
}

Комментарии

Дополнительные сведения о контрактах данных см. в разделе Использование контрактов данных.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

Исходный код:
XPathQueryGenerator.cs
Исходный код:
XPathQueryGenerator.cs
Исходный код:
XPathQueryGenerator.cs

Создает XPath из контракта данных, используя заданный тип контракта данных, массив элементов метаданных, элемент верхнего уровня и пространства имен.

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);

Параметры

type
Type

Тип, представляющий контракт данных.

pathToMember
MemberInfo[]

Метаданные, сформированные с использованием метода GetMember класса Type, указывающего определенный элемент данных, использованный для формирования запроса.

rootElementXpath
StringBuilder

Элемент верхнего уровня в xpath.

namespaces
XmlNamespaceManager

Пространства имен XML и их префиксы, встречающиеся в контракте данных.

Возвращаемое значение

String

XPath, созданный из типа и данных члена.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1