XmlChoiceIdentifierAttribute.MemberName 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
형식을 검색하는 경우 사용할 열거형을 반환하는 필드의 이름을 가져오거나 설정합니다.
public:
property System::String ^ MemberName { System::String ^ get(); void set(System::String ^ value); };
public string MemberName { get; set; }
member this.MemberName : string with get, set
Public Property MemberName As String
속성 값
열거형을 반환하는 필드의 이름입니다.
예제
다음 예제에서는 두 개의 필드를 포함하는 클래스 Choices
를 직렬화합니다ManyChoices
. MyChoice
속성 XmlChoiceIdentifierAttribute 에서 멤버 값을 검색하는 열거형을 가져오거나 설정하는 다른 클래스 멤버를 지정 MemberName 하는 각 필드에 적용됩니다. 필드에 MyChoice
해당 열거형 멤버 EnumType
가 있는 단일 값으로 필드를 설정할 수 있습니다. ManyChoices
필드는 개체 배열을 반환합니다. ChoiceArray
필드는 열거형 값의 배열을 반환합니다. 필드의 각 배열 멤버에 ManyChoices
대해 해당 멤버는 필드에서 반환된 배열에서 찾을 수 ChoiceArray
있습니다.
#using <System.dll>
#using <System.xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Xml::Serialization;
using namespace System::IO;
[XmlType(IncludeInSchema=false)]
public enum class ItemChoiceType
{
None, Word, Number, DecimalNumber
};
public enum class MoreChoices
{
None, Item, Amount, Temp
};
public ref class Choices
{
public:
// The MyChoice field can be set to any one of
// the types below.
[XmlChoiceIdentifier("EnumType")]
[XmlElement("Word",String::typeid)]
[XmlElement("Number",Int32::typeid)]
[XmlElement("DecimalNumber",Double::typeid)]
Object^ MyChoice;
// Don't serialize this field. The EnumType field
// contains the enumeration value that corresponds
// to the MyChoice field value.
[XmlIgnore]
ItemChoiceType EnumType;
// The ManyChoices field can contain an array
// of choices. Each choice must be matched to
// an array item in the ChoiceArray field.
[XmlChoiceIdentifier("ChoiceArray")]
[XmlElement("Item",String::typeid)]
[XmlElement("Amount",Int32::typeid)]
[XmlElement("Temp",Double::typeid)]
array<Object^>^ManyChoices;
// TheChoiceArray field contains the enumeration
// values, one for each item in the ManyChoices array.
[XmlIgnore]
array<MoreChoices>^ChoiceArray;
};
void SerializeObject( String^ filename );
void DeserializeObject( String^ filename );
int main()
{
SerializeObject( "Choices.xml" );
DeserializeObject( "Choices.xml" );
}
void SerializeObject( String^ filename )
{
XmlSerializer^ mySerializer = gcnew XmlSerializer( Choices::typeid );
TextWriter^ writer = gcnew StreamWriter( filename );
Choices^ myChoices = gcnew Choices;
// Set the MyChoice field to a string. Set the
// EnumType to Word.
myChoices->MyChoice = "Book";
myChoices->EnumType = ItemChoiceType::Word;
// Populate an object array with three items, one
// of each enumeration type. Set the array to the
// ManyChoices field.
array<Object^>^strChoices = {"Food",5,98.6};
myChoices->ManyChoices = strChoices;
// For each item in the ManyChoices array, add an
// enumeration value.
array<MoreChoices>^ itmChoices = {MoreChoices::Item,MoreChoices::Amount,MoreChoices::Temp};
myChoices->ChoiceArray = itmChoices;
mySerializer->Serialize( writer, myChoices );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Choices::typeid );
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Choices^ myChoices = safe_cast<Choices^>(ser->Deserialize( fs ));
fs->Close();
// Disambiguate the MyChoice value using the enumeration.
if ( myChoices->EnumType == ItemChoiceType::Word )
{
Console::WriteLine( "Word: {0}", myChoices->MyChoice->ToString() );
}
else
if ( myChoices->EnumType == ItemChoiceType::Number )
{
Console::WriteLine( "Number: {0}", myChoices->MyChoice->ToString() );
}
else
if ( myChoices->EnumType == ItemChoiceType::DecimalNumber )
{
Console::WriteLine( "DecimalNumber: {0}", myChoices->MyChoice->ToString() );
}
// Disambiguate the ManyChoices values using the enumerations.
for ( int i = 0; i < myChoices->ManyChoices->Length; i++ )
{
if ( myChoices->ChoiceArray[ i ] == MoreChoices::Item )
Console::WriteLine( "Item: {0}", myChoices->ManyChoices[ i ] );
else
if ( myChoices->ChoiceArray[ i ] == MoreChoices::Amount )
Console::WriteLine( "Amount: ", myChoices->ManyChoices[ i ]->ToString() );
if ( myChoices->ChoiceArray[ i ] == MoreChoices::Temp )
Console::WriteLine( "Temp: {0}", myChoices->ManyChoices[ i ]->ToString() );
}
}
using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
public class Choices{
// The MyChoice field can be set to any one of
// the types below.
[XmlChoiceIdentifier("EnumType")]
[XmlElement("Word", typeof(string))]
[XmlElement("Number", typeof(int))]
[XmlElement("DecimalNumber", typeof(double))]
public object MyChoice;
// Don't serialize this field. The EnumType field
// contains the enumeration value that corresponds
// to the MyChoice field value.
[XmlIgnore]
public ItemChoiceType EnumType;
// The ManyChoices field can contain an array
// of choices. Each choice must be matched to
// an array item in the ChoiceArray field.
[XmlChoiceIdentifier("ChoiceArray")]
[XmlElement("Item", typeof(string))]
[XmlElement("Amount", typeof(int))]
[XmlElement("Temp", typeof(double))]
public object[] ManyChoices;
// TheChoiceArray field contains the enumeration
// values, one for each item in the ManyChoices array.
[XmlIgnore]
public MoreChoices[] ChoiceArray;
}
[XmlType(IncludeInSchema=false)]
public enum ItemChoiceType{
None,
Word,
Number,
DecimalNumber
}
public enum MoreChoices{
None,
Item,
Amount,
Temp
}
public class Test{
static void Main(){
Test t = new Test();
t.SerializeObject("Choices.xml");
t.DeserializeObject("Choices.xml");
}
private void SerializeObject(string filename){
XmlSerializer mySerializer =
new XmlSerializer(typeof(Choices));
TextWriter writer = new StreamWriter(filename);
Choices myChoices = new Choices();
// Set the MyChoice field to a string. Set the
// EnumType to Word.
myChoices.MyChoice= "Book";
myChoices.EnumType = ItemChoiceType.Word;
// Populate an object array with three items, one
// of each enumeration type. Set the array to the
// ManyChoices field.
object[] strChoices = new object[]{"Food", 5, 98.6};
myChoices.ManyChoices=strChoices;
// For each item in the ManyChoices array, add an
// enumeration value.
MoreChoices[] itmChoices = new MoreChoices[]
{MoreChoices.Item,
MoreChoices.Amount,
MoreChoices.Temp};
myChoices.ChoiceArray=itmChoices;
mySerializer.Serialize(writer, myChoices);
writer.Close();
}
private void DeserializeObject(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Choices));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
Choices myChoices = (Choices)
ser.Deserialize(fs);
fs.Close();
// Disambiguate the MyChoice value using the enumeration.
if(myChoices.EnumType == ItemChoiceType.Word){
Console.WriteLine("Word: " +
myChoices.MyChoice.ToString());
}
else if(myChoices.EnumType == ItemChoiceType.Number){
Console.WriteLine("Number: " +
myChoices.MyChoice.ToString());
}
else if(myChoices.EnumType == ItemChoiceType.DecimalNumber){
Console.WriteLine("DecimalNumber: " +
myChoices.MyChoice.ToString());
}
// Disambiguate the ManyChoices values using the enumerations.
for(int i = 0; i<myChoices.ManyChoices.Length; i++){
if(myChoices.ChoiceArray[i] == MoreChoices.Item)
Console.WriteLine("Item: " + (string) myChoices.ManyChoices[i]);
else if(myChoices.ChoiceArray[i] == MoreChoices.Amount)
Console.WriteLine("Amount: " + myChoices.ManyChoices[i].ToString());
if(myChoices.ChoiceArray[i] == MoreChoices.Temp)
Console.WriteLine("Temp: " + (string) myChoices.ManyChoices[i].ToString());
}
}
}
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO
Public Class Choices
' The MyChoice field can be set to any one of
' the types below.
<XmlChoiceIdentifier("EnumType"), _
XmlElement("Word", GetType(String)), _
XmlElement("Number", GetType(Integer)), _
XmlElement("DecimalNumber", GetType(double))> _
Public MyChoice As Object
' Don't serialize this field. The EnumType field
' contains the enumeration value that corresponds
' to the MyChoice field value.
<XmlIgnore> _
Public EnumType As ItemChoiceType
'The ManyChoices field can contain an array
' of choices. Each choice must be matched to
' an array item in the ChoiceArray field.
<XmlChoiceIdentifier("ChoiceArray"), _
XmlElement("Item", GetType(string)), _
XmlElement("Amount", GetType(Integer)), _
XmlElement("Temp", GetType(double))> _
Public ManyChoices() As Object
' TheChoiceArray field contains the enumeration
' values, one for each item in the ManyChoices array.
<XmlIgnore> _
Public ChoiceArray() As MoreChoices
End Class
<XmlType(IncludeInSchema:=false)> _
Public Enum ItemChoiceType
None
Word
Number
DecimalNumber
End Enum
<XmlType(IncludeInSchema:=false)> _
Public Enum MoreChoices
None
Item
Amount
Temp
End Enum
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
t.SerializeObject("Choices.xml")
t.DeserializeObject("Choices.xml")
End Sub
private Sub SerializeObject(filename As string)
Dim mySerializer As XmlSerializer = _
New XmlSerializer(GetType(Choices))
Dim writer As TextWriter = New StreamWriter(filename)
Dim myChoices As Choices = New Choices()
' Set the MyChoice field to a string. Set the
' EnumType to Word.
myChoices.MyChoice= "Book"
myChoices.EnumType = ItemChoiceType.Word
' Populate an object array with three items, one
' of each enumeration type. Set the array to the
' ManyChoices field.
Dim strChoices () As Object = New object(){"Food", 5, 98.6}
myChoices.ManyChoices=strChoices
' For each item in the ManyChoices array, add an
' enumeration value.
Dim itmChoices () As MoreChoices = New MoreChoices() _
{MoreChoices.Item, _
MoreChoices.Amount, _
MoreChoices.Temp}
myChoices.ChoiceArray=itmChoices
mySerializer.Serialize(writer, myChoices)
writer.Close()
End Sub
private Sub DeserializeObject(filename As string)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Choices))
' A FileStream is needed to read the XML document.
Dim fs As FileStream = New FileStream(filename, FileMode.Open)
Dim myChoices As Choices = CType(ser.Deserialize(fs), Choices)
fs.Close()
' Disambiguate the MyChoice value Imports the enumeration.
if myChoices.EnumType = ItemChoiceType.Word Then
Console.WriteLine("Word: " & _
myChoices.MyChoice.ToString())
else if myChoices.EnumType = ItemChoiceType.Number Then
Console.WriteLine("Number: " & _
myChoices.MyChoice.ToString())
else if myChoices.EnumType = ItemChoiceType.DecimalNumber Then
Console.WriteLine("DecimalNumber: " & _
myChoices.MyChoice.ToString())
End If
' Disambiguate the ManyChoices values Imports the enumerations.
Dim i As Integer
for i = 0 to myChoices.ManyChoices.Length -1
if myChoices.ChoiceArray(i) = MoreChoices.Item Then
Console.WriteLine("Item: " + _
myChoices.ManyChoices(i).ToString())
else if myChoices.ChoiceArray(i) = MoreChoices.Amount Then
Console.WriteLine("Amount: " + _
myChoices.ManyChoices(i).ToString())
else if (myChoices.ChoiceArray(i) = MoreChoices.Temp)
Console.WriteLine("Temp: " + _
myChoices.ManyChoices(i).ToString())
End If
Next i
End Sub
End Class
설명
값에 명명된 필드가 반환하는 열거형에 하나 이상의 멤버가 MemberName 있어야 합니다. 기본적으로 해당 열거형 이름은 적용되는 필드 XmlChoiceIdentifierAttribute 의 이름을 사용합니다.