XmlIncludeAttribute.Type プロパティ
含めるオブジェクトの型を取得または設定します。
Public Property Type As Type
[C#]
public Type Type {get; set;}
[C++]
public: __property Type* get_Type();public: __property void set_Type(Type*);
[JScript]
public function get Type() : Type;public function set Type(Type);
プロパティ値
含めるオブジェクトの Type 。
使用例
[Visual Basic, C#, C++] Employee オブジェクトの配列を返すフィールド Employees を含むクラス Group を定義する例を次に示します。この例では、Employee クラスから Manager クラスを派生させ、 XmlIncludeAttribute を Employee クラスに適用します。Group オブジェクトが作成されると、Manager オブジェクトを Employee 配列に挿入します。最後に、Group オブジェクトをシリアル化します。
Imports System
Imports System.IO
Imports System.Xml.Serialization
Imports Microsoft.VisualBasic
Public Class Group
Public Employees() As Employee
End Class
' Instruct the XmlSerializer to accept Manager types as well.
<XmlInclude(GetType(Manager))> _
Public Class Employee
Public Name As String
End Class
Public Class Manager
Inherits Employee
Public Level As Integer
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("IncludeExample.xml")
test.DeserializeObject("IncludeExample.xml")
End Sub
Public Sub SerializeObject(ByVal filename As String)
Dim s As New XmlSerializer(GetType(Group))
Dim writer As New StreamWriter(filename)
Dim group As New Group()
Dim manager As New Manager()
Dim emp1 As New Employee()
Dim emp2 As New Employee()
manager.Name = "Zeus"
manager.Level = 2
emp1.Name = "Ares"
emp2.Name = "Artemis"
Dim emps() As Employee = {manager, emp1, emp2}
group.Employees = emps
s.Serialize(writer, group)
writer.Close()
End Sub
Public Sub DeserializeObject(ByVal filename As String)
Dim fs As New FileStream(filename, FileMode.Open)
Dim x As New XmlSerializer(GetType(Group))
Dim g As Group = CType(x.Deserialize(fs), Group)
Console.Write("Members:")
Dim e As Employee
For Each e In g.Employees
Console.WriteLine(ControlChars.Tab + e.Name)
Next e
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Xml.Serialization;
public class Group
{
public Employee[] Employees;
}
// Instruct the XmlSerializer to accept Manager types as well.
[XmlInclude(typeof(Manager))]
public class Employee
{
public string Name;
}
public class Manager:Employee
{
public int Level;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("IncludeExample.xml");
test.DeserializeObject("IncludeExample.xml");
}
public void SerializeObject(string filename)
{
XmlSerializer s = new XmlSerializer(typeof(Group));
TextWriter writer = new StreamWriter(filename);
Group group = new Group();
Manager manager = new Manager();
Employee emp1 = new Employee();
Employee emp2 = new Employee();
manager.Name = "Zeus";
manager.Level = 2;
emp1.Name = "Ares";
emp2.Name = "Artemis";
Employee [] emps = new Employee[3]{manager, emp1, emp2};
group.Employees = emps;
s.Serialize(writer, group);
writer.Close();
}
public void DeserializeObject(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open);
XmlSerializer x = new XmlSerializer(typeof(Group));
Group g = (Group) x.Deserialize(fs);
Console.Write("Members:");
foreach(Employee e in g.Employees)
{
Console.WriteLine("\t" + e.Name);
}
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
public __gc class Employee;
public __gc class Manager;
public __gc class Group
{
public:
Employee* Employees[];
};
// Instruct the XmlSerializer to accept Manager types as well.
[XmlInclude(__typeof(Manager))]
public __gc class Employee
{
public:
String* Name;
};
public __gc class Manager: public Employee
{
public:
int Level;
};
void SerializeObject(String* filename)
{
XmlSerializer* s = new XmlSerializer(__typeof(Group));
TextWriter* writer = new StreamWriter(filename);
Group* group = new Group();
Manager* manager = new Manager();
Employee* emp1 = new Employee();
Employee* emp2 = new Employee();
manager->Name = S"Zeus";
manager->Level = 2;
emp1->Name = S"Ares";
emp2->Name = S"Artemis";
Employee* emps[] = {manager, emp1, emp2};
group->Employees = emps;
s->Serialize(writer, group);
writer->Close();
}
void DeserializeObject(String* filename)
{
FileStream* fs = new FileStream(filename, FileMode::Open);
XmlSerializer* x = new XmlSerializer(__typeof(Group));
Group* g = dynamic_cast<Group*> (x->Deserialize(fs));
Console::Write(S"Members:");
System::Collections::IEnumerator* myEnum = g->Employees->GetEnumerator();
while (myEnum->MoveNext())
{
Employee* e = __try_cast<Employee*>(myEnum->Current);
Console::WriteLine(S"\t{0}", e->Name);
}
}
int main()
{
SerializeObject(S"IncludeExample.xml");
DeserializeObject(S"IncludeExample.xml");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
XmlIncludeAttribute クラス | XmlIncludeAttribute メンバ | System.Xml.Serialization 名前空間