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 -> string
Public Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), ByRef namespaces As XmlNamespaceManager) As String
パラメーター
- type
- Type
データ コントラクトを表す型。
- pathToMember
- MemberInfo[]
GetMember クラスの Type メソッドを使用して生成されたメタデータ。クエリの生成に使用する特定のデータ メンバーをポイントします。
- namespaces
- XmlNamespaceManager
データ コントラクト内で検出される XML 名前空間とそのプレフィックス。
戻り値
型およびメンバー データから生成される XPath。
例
DataContractAttribute 属性と DataMemberAttribute 属性が適用された 2 つのクラスから 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 -> string
Public Shared Function CreateFromDataContractSerializer (type As Type, pathToMember As MemberInfo(), rootElementXpath As StringBuilder, ByRef namespaces As XmlNamespaceManager) As String
パラメーター
- type
- Type
データ コントラクトを表す型。
- pathToMember
- MemberInfo[]
GetMember クラスの Type メソッドを使用して生成されたメタデータ。クエリの生成に使用する特定のデータ メンバーをポイントします。
- rootElementXpath
- StringBuilder
トップ レベルの要素が xpath 内にある必要があります。
- namespaces
- XmlNamespaceManager
データ コントラクト内で検出される XML 名前空間とそのプレフィックス。
戻り値
型およびメンバー データから生成される XPath。