XmlAttributes.XmlEnum 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XmlSerializer가 열거형 멤버를 serialize하는 방식을 지정하는 개체를 가져오거나 설정합니다.
public:
property System::Xml::Serialization::XmlEnumAttribute ^ XmlEnum { System::Xml::Serialization::XmlEnumAttribute ^ get(); void set(System::Xml::Serialization::XmlEnumAttribute ^ value); };
public System.Xml.Serialization.XmlEnumAttribute XmlEnum { get; set; }
public System.Xml.Serialization.XmlEnumAttribute? XmlEnum { get; set; }
member this.XmlEnum : System.Xml.Serialization.XmlEnumAttribute with get, set
Public Property XmlEnum As XmlEnumAttribute
속성 값
XmlEnumAttribute가 열거형 멤버를 serialize하는 방식을 지정하는 XmlSerializer입니다.
예제
다음 예제에서는 라는 두 개의 클래스를 직렬화 Food
고 FoodType
입니다. FoodType
재정의 되는 두 개의 열거형을 포함 하는 클래스를 만듭니다 각 열거에 대 한는 XmlEnumAttribute 에 할당 되는 개체를 XmlEnum 의 속성은 XmlAttributes 개체. 예제에서는 그런를 XmlAttributes 개체를 XmlAttributeOverrides 개체를 만드는 데 사용 되는 XmlSerializer합니다.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public enum class FoodType
{
// Subsequent code overrides these enumerations.
Low, High
};
// This is the class that will be serialized.
public ref class Food
{
public:
FoodType Type;
};
// Return an XmlSerializer used for overriding.
XmlSerializer^ CreateOverrider()
{
// Create the XmlAttributeOverrides and XmlAttributes objects.
XmlAttributeOverrides^ xOver = gcnew XmlAttributeOverrides;
XmlAttributes^ xAttrs = gcnew XmlAttributes;
// Add an XmlEnumAttribute for the FoodType.Low enumeration.
XmlEnumAttribute^ xEnum = gcnew XmlEnumAttribute;
xEnum->Name = "Cold";
xAttrs->XmlEnum = xEnum;
xOver->Add( FoodType::typeid, "Low", xAttrs );
// Add an XmlEnumAttribute for the FoodType.High enumeration.
xAttrs = gcnew XmlAttributes;
xEnum = gcnew XmlEnumAttribute;
xEnum->Name = "Hot";
xAttrs->XmlEnum = xEnum;
xOver->Add( FoodType::typeid, "High", xAttrs );
// Create the XmlSerializer, and return it.
return gcnew XmlSerializer( Food::typeid,xOver );
}
void SerializeObject( String^ filename )
{
// Create an instance of the XmlSerializer class.
XmlSerializer^ mySerializer = CreateOverrider();
// Writing the file requires a TextWriter.
TextWriter^ writer = gcnew StreamWriter( filename );
// Create an instance of the class that will be serialized.
Food^ myFood = gcnew Food;
// Set the object properties.
myFood->Type = FoodType::High;
// Serialize the class, and close the TextWriter.
mySerializer->Serialize( writer, myFood );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ mySerializer = CreateOverrider();
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Food^ myFood = dynamic_cast<Food^>(mySerializer->Deserialize( fs ));
Console::WriteLine( myFood->Type );
}
int main()
{
SerializeObject( "OverrideEnum.xml" );
DeserializeObject( "OverrideEnum.xml" );
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class Food
{
public FoodType Type;
}
public enum FoodType
{
// Subsequent code overrides these enumerations.
Low,
High
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("OverrideEnum.xml");
test.DeserializeObject("OverrideEnum.xml");
}
// Return an XmlSerializer used for overriding.
public XmlSerializer CreateOverrider()
{
// Create the XmlAttributeOverrides and XmlAttributes objects.
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
XmlAttributes xAttrs = new XmlAttributes();
// Add an XmlEnumAttribute for the FoodType.Low enumeration.
XmlEnumAttribute xEnum = new XmlEnumAttribute();
xEnum.Name = "Cold";
xAttrs.XmlEnum = xEnum;
xOver.Add(typeof(FoodType), "Low", xAttrs);
// Add an XmlEnumAttribute for the FoodType.High enumeration.
xAttrs = new XmlAttributes();
xEnum = new XmlEnumAttribute();
xEnum.Name = "Hot";
xAttrs.XmlEnum = xEnum;
xOver.Add(typeof(FoodType), "High", xAttrs);
// Create the XmlSerializer, and return it.
return new XmlSerializer(typeof(Food), xOver);
}
public void SerializeObject(string filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer mySerializer = CreateOverrider();
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an instance of the class that will be serialized.
Food myFood = new Food();
// Set the object properties.
myFood.Type = FoodType.High;
// Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myFood);
writer.Close();
}
public void DeserializeObject(string filename)
{
XmlSerializer mySerializer = CreateOverrider();
FileStream fs = new FileStream(filename, FileMode.Open);
Food myFood = (Food)
mySerializer.Deserialize(fs);
Console.WriteLine(myFood.Type);
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
' This is the class that will be serialized.
Public Class Food
Public Type As FoodType
End Class
Public Enum FoodType
' Subsequent code overrides these enumerations.
Low
High
End Enum
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("OverrideEnum.xml")
test.DeserializeObject("OverrideEnum.xml")
End Sub
' Return an XmlSerializer used for overriding.
Public Function CreateOverrider() As XmlSerializer
' Create the XmlAttributeOverrides and XmlAttributes objects.
Dim xOver As New XmlAttributeOverrides()
Dim xAttrs As New XmlAttributes()
' Add an XmlEnumAttribute for the FoodType.Low enumeration.
Dim xEnum As New XmlEnumAttribute()
xEnum.Name = "Cold"
xAttrs.XmlEnum = xEnum
xOver.Add(GetType(FoodType), "Low", xAttrs)
' Add an XmlEnumAttribute for the FoodType.High enumeration.
xAttrs = New XmlAttributes()
xEnum = New XmlEnumAttribute()
xEnum.Name = "Hot"
xAttrs.XmlEnum = xEnum
xOver.Add(GetType(FoodType), "High", xAttrs)
' Create the XmlSerializer, and return it.
Return New XmlSerializer(GetType(Food), xOver)
End Function
Public Sub SerializeObject(ByVal filename As String)
' Create an instance of the XmlSerializer class.
Dim mySerializer As XmlSerializer = CreateOverrider()
' Writing the file requires a TextWriter.
Dim writer As New StreamWriter(filename)
' Create an instance of the class that will be serialized.
Dim myFood As New Food()
' Set the object properties.
myFood.Type = FoodType.High
' Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myFood)
writer.Close()
End Sub
Public Sub DeserializeObject(ByVal filename As String)
Dim mySerializer As XmlSerializer = CreateOverrider()
Dim fs As New FileStream(filename, FileMode.Open)
Dim myFood As Food = CType(mySerializer.Deserialize(fs), Food)
Console.WriteLine(myFood.Type)
End Sub
End Class
설명
재정의 하려는 각 식별자를 만들어야 합니다는 XmlAttributes 개체를 설정 합니다 XmlEnum 속성을는 XmlEnumAttribute 식별자를 재정의 하 합니다. 추가 합니다 XmlAttributes 개체를 XmlAttributeOverrides 개체를 모두 지정를 Type 열거형 및 재정의 된 멤버 이름을 포함 하는 클래스의 합니다.