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입니다.
예제
다음 예제에서는 해당 클래스와 DataMemberAttribute 특성이 적용된 두 클래스에서 XPath 쿼리를 DataContractAttribute 만듭니다.
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입니다.