UnreferencedObjectEventArgs.UnreferencedObject プロパティ
アセンブリ: System.Xml (system.xml.dll 内)

逆シリアル化された、未参照のオブジェクト。

UnreferencedObject は、そのプロパティを調べる必要がある場合には、既知の型にキャストできます。
UnreferencedObject プロパティの詳細については、UnreferencedObject イベントのトピックを参照してください。

UnreferencedObjectEventHandler を XmlSerializer に追加する例を次に示します。イベントは、Serializer_UnreferencedObject メソッドによって処理されます。このサンプル コードを実行するには、UnrefObj.xml という名前のファイルに、次の XML を切り取って貼り付けます。
<wrapper> <Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" n1:GroupName=".NET" xmlns:n1="http://www.cpandl.com"> </Group> <Vehicle n1:type="Vehicle" xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" n1:type="q1:string">ABCD</licenseNumber> </Vehicle> <Vehicle n1:type="Vehicle" xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" n1:type="q1:string">1234</licenseNumber> </Vehicle> </wrapper>
Imports System Imports System.IO Imports System.Text Imports System.Xml Imports System.Xml.Serialization Imports System.Xml.Schema ' You must use the SoapIncludeAttribute to inform the XmlSerializer ' that the Vehicle type should be recognized when deserializing. <SoapInclude(GetType(Vehicle))> _ Public Class Group Public GroupName As String public GroupVehicle As Vehicle End Class Public Class Vehicle Public licenseNumber As String End Class Public Class Run Shared Sub Main() Dim test As Run = new Run() test.DeserializeObject("UnrefObj.xml") End Sub Public Sub DeserializeObject(filename As String) ' Create an instance of the XmlSerializer class. Dim myMapping As XmlTypeMapping = _ (new SoapReflectionImporter().ImportTypeMapping _ (GetType(Group))) Dim mySerializer As XmlSerializer = _ new XmlSerializer(myMapping) AddHandler mySerializer.UnreferencedObject, _ AddressOf Serializer_UnreferencedObject ' Reading the file requires an XmlTextReader. Dim reader As XmlTextReader = _ new XmlTextReader(filename) reader.ReadStartElement() ' Deserialize and cast the object. Dim myGroup As Group myGroup = CType( mySerializer.Deserialize(reader), Group) reader.ReadEndElement() reader.Close() End Sub Private Sub Serializer_UnreferencedObject _ (sender As object , e As UnreferencedObjectEventArgs) Console.WriteLine("UnreferencedObject:") Console.WriteLine("ID: " + e.UnreferencedId) Console.WriteLine("UnreferencedObject: " + e.UnreferencedObject) Dim myVehicle As Vehicle = CType(e.UnreferencedObject, Vehicle) Console.WriteLine("License: " + myVehicle.licenseNumber) End Sub End Class ' The XML document should contain this information: '<wrapper> ' <Group xmlns:xsi="http:'www.w3.org/2001/XMLSchema-instance" 'xmlns:xsd="http:'www.w3.org/2001/XMLSchema" id="id1" 'n1:GroupName=".NET" xmlns:n1="http:'www.cpandl.com"> ' </Group> '<Vehicle id="id2" n1:type="Vehicle" 'xmlns:n1="http:'www.w3.org/2001/XMLSchema-instance"> ' <licenseNumber xmlns:q1="http:'www.w3.org/2001/XMLSchema" 'n1:type="q1:string">ABCD</licenseNumber> ' </Vehicle> '<Vehicle id="id3" n1:type="Vehicle" 'xmlns:n1="http:'www.w3.org/2001/XMLSchema-instance"> ' <licenseNumber xmlns:q1="http:'www.w3.org/2001/XMLSchema" 'n1:type="q1:string">1234</licenseNumber> ' </Vehicle> '</wrapper>
using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; using System.Xml.Schema; // You must use the SoapIncludeAttribute to inform the XmlSerializer // that the Vehicle type should be recognized when deserializing. [SoapInclude(typeof(Vehicle))] public class Group { public string GroupName; public Vehicle GroupVehicle; } [SoapInclude(typeof(Vehicle))] public class Vehicle { public string licenseNumber; } public class Run { public static void Main() { Run test = new Run(); test.DeserializeObject("UnrefObj.xml"); } public void DeserializeObject(string filename) { // Create an instance of the XmlSerializer class. XmlTypeMapping myMapping = (new SoapReflectionImporter().ImportTypeMapping( typeof(Group))); XmlSerializer mySerializer = new XmlSerializer(myMapping); mySerializer.UnreferencedObject += new UnreferencedObjectEventHandler (Serializer_UnreferencedObject); // Reading the file requires an XmlTextReader. XmlTextReader reader= new XmlTextReader(filename); reader.ReadStartElement(); // Deserialize and cast the object. Group myGroup; myGroup = (Group) mySerializer.Deserialize(reader); reader.ReadEndElement(); reader.Close(); } private void Serializer_UnreferencedObject (object sender, UnreferencedObjectEventArgs e){ Console.WriteLine("UnreferencedObject:"); Console.WriteLine("ID: " + e.UnreferencedId); Console.WriteLine("UnreferencedObject: " + e.UnreferencedObject); Vehicle myVehicle = (Vehicle) e.UnreferencedObject; Console.WriteLine("License: " + myVehicle.licenseNumber); } } // The file named "UnrefObj.xml" should contain this XML: // <wrapper> // <Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id1" //n1:GroupName=".NET" xmlns:n1="http://www.cpandl.com"> // </Group> //<Vehicle id="id2" n1:type="Vehicle" //xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" //n1:type="q1:string">ABCD</licenseNumber> // </Vehicle> //<Vehicle id="id3" n1:type="Vehicle" //xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" //n1:type="q1:string">1234</licenseNumber> // </Vehicle> //</wrapper>
#using <System.Xml.dll> #using <System.dll> using namespace System; using namespace System::IO; using namespace System::Text; using namespace System::Xml; using namespace System::Xml::Serialization; using namespace System::Xml::Schema; ref class Vehicle; [SoapInclude(Vehicle::typeid)] public ref class Vehicle { public: String^ licenseNumber; }; // You must use the SoapIncludeAttribute to inform the XmlSerializer // that the Vehicle type should be recognized when deserializing. [SoapInclude(Vehicle::typeid)] public ref class Group { public: String^ GroupName; Vehicle^ GroupVehicle; }; public ref class Run { public: void DeserializeObject( String^ filename ) { // Create an instance of the XmlSerializer class. XmlTypeMapping^ myMapping = ((gcnew SoapReflectionImporter)->ImportTypeMapping( Group::typeid )); XmlSerializer^ mySerializer = gcnew XmlSerializer( myMapping ); mySerializer->UnreferencedObject += gcnew UnreferencedObjectEventHandler( this, &Run::Serializer_UnreferencedObject ); // Reading the file requires an XmlTextReader. XmlTextReader^ reader = gcnew XmlTextReader( filename ); reader->ReadStartElement(); // Deserialize and cast the object. Group^ myGroup; myGroup = dynamic_cast<Group^>(mySerializer->Deserialize( reader )); reader->ReadEndElement(); reader->Close(); } private: void Serializer_UnreferencedObject( Object^ /*sender*/, UnreferencedObjectEventArgs^ e ) { Console::WriteLine( "UnreferencedObject:" ); Console::WriteLine( "ID: {0}", e->UnreferencedId ); Console::WriteLine( "UnreferencedObject: {0}", e->UnreferencedObject ); Vehicle^ myVehicle = dynamic_cast<Vehicle^>(e->UnreferencedObject); Console::WriteLine( "License: {0}", myVehicle->licenseNumber ); } }; int main() { Run^ test = gcnew Run; test->DeserializeObject( "UnrefObj.xml" ); } // The file named S"UnrefObj.xml" should contain this XML: // <wrapper> // <Group xmlns:xsi=S"http://www.w3.org/2001/XMLSchema-instance" //xmlns:xsd=S"http://www.w3.org/2001/XMLSchema" id=S"id1" //n1:GroupName=S".NET" xmlns:n1=S"http://www.cpandl.com"> // </Group> //<Vehicle id=S"id2" n1:type=S"Vehicle" //xmlns:n1=S"http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1=S"http://www.w3.org/2001/XMLSchema" //n1:type=S"q1:String*">ABCD</licenseNumber> // </Vehicle> //<Vehicle id=S"id3" n1:type=S"Vehicle" //xmlns:n1=S"http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1=S"http://www.w3.org/2001/XMLSchema" //n1:type=S"q1:String*">1234</licenseNumber> // </Vehicle> //</wrapper>
import System.*; import System.IO.*; import System.Text.*; import System.Xml.*; import System.Xml.Serialization.*; import System.Xml.Schema.*; // You must use the SoapIncludeAttribute to inform the XmlSerializer // that the Vehicle type should be recognized when deserializing. /** @attribute SoapInclude(Vehicle.class) */ public class Group { public String groupName; public Vehicle groupVehicle; } //Group /** @attribute SoapInclude(Vehicle.class) */ public class Vehicle { public String licenseNumber; } //Vehicle public class Run { public static void main(String[] args) { Run test = new Run(); test.DeserializeObject("UnrefObj.xml"); } //main public void DeserializeObject(String fileName) { // Create an instance of the XmlSerializer class. XmlTypeMapping myMapping = (new SoapReflectionImporter()). ImportTypeMapping(Group.class.ToType()); XmlSerializer mySerializer = new XmlSerializer(myMapping); mySerializer.add_UnreferencedObject(new UnreferencedObjectEventHandler( Serializer_UnreferencedObject)); // Reading the file requires an XmlTextReader. XmlTextReader reader = new XmlTextReader(fileName); reader.ReadStartElement(); // Deserialize and cast the object. Group myGroup; myGroup = (Group)mySerializer.Deserialize(reader); reader.ReadEndElement(); reader.Close(); } //DeserializeObject private void Serializer_UnreferencedObject(Object sender, UnreferencedObjectEventArgs e) { Console.WriteLine("UnreferencedObject:"); Console.WriteLine("ID: " + e.get_UnreferencedId()); Console.WriteLine("UnreferencedObject: " + e.get_UnreferencedObject()); Vehicle myVehicle = (Vehicle)e.get_UnreferencedObject(); Console.WriteLine("License: " + myVehicle.licenseNumber); } //Serializer_UnreferencedObject } //Run // The file named "UnrefObj.xml" should contain this XML: // <wrapper> // <Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id1" //n1:groupName=".NET" xmlns:n1="http://www.cpandl.com"> // </Group> //<Vehicle id="id2" n1:type="Vehicle" //xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" //n1:type="q1:string">ABCD</licenseNumber> // </Vehicle> //<Vehicle id="id3" n1:type="Vehicle" //xmlns:n1="http://www.w3.org/2001/XMLSchema-instance"> // <licenseNumber xmlns:q1="http://www.w3.org/2001/XMLSchema" //n1:type="q1:string">1234</licenseNumber> // </Vehicle> //</wrapper>

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- UnreferencedObjectEventArgs.UnreferencedObject プロパティのページへのリンク