UnreferencedObjectEventArgs.UnreferencedId-Eigenschaft
Ruft die ID des Objekts ab.
Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)
Syntax
'Declaration
Public ReadOnly Property UnreferencedId As String
'Usage
Dim instance As UnreferencedObjectEventArgs
Dim value As String
value = instance.UnreferencedId
public string UnreferencedId { get; }
public:
property String^ UnreferencedId {
String^ get ();
}
/** @property */
public String get_UnreferencedId ()
public function get UnreferencedId () : String
Eigenschaftenwert
Die ID des Objekts.
Hinweise
Verwenden Sie die UnreferencedId-Eigenschaft, wenn Sie wissen müssen, ob mehr als ein Objekt das Ereignis auslöst. Die Eigenschaft ermöglicht es Ihnen, mehrere Instanzen von Objekten ohne Verweis zu unterscheiden.
Weitere Informationen über die UnreferencedId-Eigenschaft finden Sie unter dem UnreferencedObject-Ereignis.
Beispiel
Im folgenden Beispiel wird einem XmlSerializer ein UnreferencedObjectEventHandler hinzugefügt. Das Ereignis wird von der Serializer_UnreferencedObject
-Methode behandelt. Zum Ausführen des Beispiels schneiden Sie den folgenden XML-Code aus, und fügen Sie diesen in eine Datei mit dem Namen UnrefObj.xml ein.
<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>
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>
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
UnreferencedObjectEventArgs-Klasse
UnreferencedObjectEventArgs-Member
System.Xml.Serialization-Namespace