BinaryFormatter.Deserialize Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Deserialisiert einen Stream in ein Objektdiagramm.
Überlädt
| Deserialize(Stream) |
Veraltet.
Deserialisiert den angegebenen Stream in ein Objektdiagramm. |
| Deserialize(Stream, HeaderHandler) |
Deserialisiert den angegebenen Stream in ein Objektdiagramm. Der bereitgestellte HeaderHandler behandelt sämtliche Header in diesem Stream. |
Hinweise
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Deserialize(Stream)
Achtung
BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}
Deserialisiert den angegebenen Stream in ein Objektdiagramm.
public:
virtual System::Object ^ Deserialize(System::IO::Stream ^ serializationStream);
[System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public object Deserialize (System.IO.Stream serializationStream);
public object Deserialize (System.IO.Stream serializationStream);
[<System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
abstract member Deserialize : System.IO.Stream -> obj
override this.Deserialize : System.IO.Stream -> obj
abstract member Deserialize : System.IO.Stream -> obj
override this.Deserialize : System.IO.Stream -> obj
Public Function Deserialize (serializationStream As Stream) As Object
Parameter
- serializationStream
- Stream
Der Stream, aus dem das Objektdiagramm deserialisiert werden soll.
Gibt zurück
Das oberste Element (Stamm) des Objektdiagramms.
Implementiert
- Attribute
Ausnahmen
serializationStream ist null.
Der serializationStream unterstützt die Suche, seine Länge ist jedoch 0.
- oder - Der Eingabestream repräsentiert keine wohlgeformte, mit BinaryFormatter serialisierte Nutzlast.
- oder - Beim Deserialisieren eines Objekts aus dem Eingabestream ist ein Fehler aufgetreten.
Die Eigenschaft InnerException enthält möglicherweise weitere Informationen zur Ursache.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
ASP.NET Core 5 und höher: Immer ausgelöst, es sei BinaryFormatter denn, die Funktionalität wird in der Projektdatei erneut aktiviert. Weitere Informationen finden Sie unter Resolving BinaryFormatter obsoletion and disablement errors (Auflösen von Fehlern aufgrund der Veraltung und Deaktivierung von BinaryFormatter).
Beispiele
using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Runtime::Serialization::Formatters::Binary;
using namespace System::Runtime::Serialization;
ref class App
{
public:
static void Serialize()
{
// Create a hashtable of values that will eventually be serialized.
Hashtable^ addresses = gcnew Hashtable;
addresses->Add( "Jeff", "123 Main Street, Redmond, WA 98052" );
addresses->Add( "Fred", "987 Pine Road, Phila., PA 19116" );
addresses->Add( "Mary", "PO Box 112233, Palo Alto, CA 94301" );
// To serialize the hashtable (and its keys/values),
// you must first open a stream for writing.
// In this case we will use a file stream.
FileStream^ fs = gcnew FileStream( "DataFile.dat",FileMode::Create );
// Construct a BinaryFormatter and use it to serialize the data to the stream.
BinaryFormatter^ formatter = gcnew BinaryFormatter;
try
{
formatter->Serialize( fs, addresses );
}
catch ( SerializationException^ e )
{
Console::WriteLine( "Failed to serialize. Reason: {0}", e->Message );
throw;
}
finally
{
fs->Close();
}
}
static void Deserialize()
{
// Declare the hashtable reference.
Hashtable^ addresses = nullptr;
// Open the file containing the data that we want to deserialize.
FileStream^ fs = gcnew FileStream( "DataFile.dat",FileMode::Open );
try
{
BinaryFormatter^ formatter = gcnew BinaryFormatter;
// Deserialize the hashtable from the file and
// assign the reference to our local variable.
addresses = dynamic_cast<Hashtable^>(formatter->Deserialize( fs ));
}
catch ( SerializationException^ e )
{
Console::WriteLine( "Failed to deserialize. Reason: {0}", e->Message );
throw;
}
finally
{
fs->Close();
}
// To prove that the table deserialized correctly, display the keys/values.
IEnumerator^ myEnum = addresses->GetEnumerator();
while ( myEnum->MoveNext() )
{
DictionaryEntry ^ de = safe_cast<DictionaryEntry ^>(myEnum->Current);
Console::WriteLine( " {0} lives at {1}.", de->Key, de->Value );
}
}
};
[STAThread]
int main()
{
App::Serialize();
App::Deserialize();
return 0;
}
using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
public class App
{
[STAThread]
static void Main()
{
Serialize();
Deserialize();
}
static void Serialize()
{
// Create a hashtable of values that will eventually be serialized.
Hashtable addresses = new Hashtable();
addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052");
addresses.Add("Fred", "987 Pine Road, Phila., PA 19116");
addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301");
// To serialize the hashtable and its key/value pairs,
// you must first open a stream for writing.
// In this case, use a file stream.
FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
// Construct a BinaryFormatter and use it to serialize the data to the stream.
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, addresses);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}
static void Deserialize()
{
// Declare the hashtable reference.
Hashtable addresses = null;
// Open the file containing the data that you want to deserialize.
FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
// Deserialize the hashtable from the file and
// assign the reference to the local variable.
addresses = (Hashtable) formatter.Deserialize(fs);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
// To prove that the table deserialized correctly,
// display the key/value pairs.
foreach (DictionaryEntry de in addresses)
{
Console.WriteLine("{0} lives at {1}.", de.Key, de.Value);
}
}
}
Imports System.IO
Imports System.Collections
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization
Module App
Sub Main()
Serialize()
Deserialize()
End Sub
Sub Serialize()
' Create a hashtable of values that will eventually be serialized.
Dim addresses As New Hashtable
addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052")
addresses.Add("Fred", "987 Pine Road, Phila., PA 19116")
addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301")
' To serialize the hashtable (and its key/value pairs),
' you must first open a stream for writing.
' In this case, use a file stream.
Dim fs As New FileStream("DataFile.dat", FileMode.Create)
' Construct a BinaryFormatter and use it to serialize the data to the stream.
Dim formatter As New BinaryFormatter
Try
formatter.Serialize(fs, addresses)
Catch e As SerializationException
Console.WriteLine("Failed to serialize. Reason: " & e.Message)
Throw
Finally
fs.Close()
End Try
End Sub
Sub Deserialize()
' Declare the hashtable reference.
Dim addresses As Hashtable = Nothing
' Open the file containing the data that you want to deserialize.
Dim fs As New FileStream("DataFile.dat", FileMode.Open)
Try
Dim formatter As New BinaryFormatter
' Deserialize the hashtable from the file and
' assign the reference to the local variable.
addresses = DirectCast(formatter.Deserialize(fs), Hashtable)
Catch e As SerializationException
Console.WriteLine("Failed to deserialize. Reason: " & e.Message)
Throw
Finally
fs.Close()
End Try
' To prove that the table deserialized correctly,
' display the key/value pairs.
Dim de As DictionaryEntry
For Each de In addresses
Console.WriteLine("{0} lives at {1}.", de.Key, de.Value)
Next
End Sub
End Module
Hinweise
Bei erfolgreicher Deserialisierung muss sich die aktuelle Position im Datenstrom am Anfang des Objektdiagramms befinden.
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Gilt für:
Deserialize(Stream, HeaderHandler)
Deserialisiert den angegebenen Stream in ein Objektdiagramm. Der bereitgestellte HeaderHandler behandelt sämtliche Header in diesem Stream.
public:
virtual System::Object ^ Deserialize(System::IO::Stream ^ serializationStream, System::Runtime::Remoting::Messaging::HeaderHandler ^ handler);
public object Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler);
abstract member Deserialize : System.IO.Stream * System.Runtime.Remoting.Messaging.HeaderHandler -> obj
override this.Deserialize : System.IO.Stream * System.Runtime.Remoting.Messaging.HeaderHandler -> obj
Public Function Deserialize (serializationStream As Stream, handler As HeaderHandler) As Object
Parameter
- serializationStream
- Stream
Der Stream, aus dem das Objektdiagramm deserialisiert werden soll.
- handler
- HeaderHandler
Der HeaderHandler, der alle Header im serializationStream behandelt. Kann null sein.
Gibt zurück
Das deserialisierte Objekt oder das oberste Objekt (Stammobjekt) des Objektdiagramms.
Implementiert
Ausnahmen
serializationStream ist null.
Der serializationStream unterstützt die Suche, seine Länge ist jedoch 0.
- oder - Der Zieltyp ist eine Decimal, aber der Wert ist außerhalb des Bereichs des Decimal-Typs.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Kopfzeilen werden nur für bestimmte Remotinganwendungen verwendet.
Damit die Deerialisierung erfolgreich ist, muss sich die aktuelle Position im Datenstrom am Anfang des Objektdiagramms befinden.
Wichtig
Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.