SoapFormatter Třída

Definice

Serializuje a deserializuje objekt nebo celý graf propojených objektů ve formátu SOAP.

public ref class SoapFormatter sealed : System::Runtime::Remoting::Messaging::IRemotingFormatter
public sealed class SoapFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
type SoapFormatter = class
    interface IRemotingFormatter
    interface IFormatter
Public NotInheritable Class SoapFormatter
Implements IRemotingFormatter
Dědičnost
SoapFormatter
Implementuje

Příklady

#using <system.dll>
#using <system.runtime.serialization.formatters.soap.dll>

using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Soap;
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.
   // We will use a file stream here.
   FileStream^ fs = gcnew FileStream( "DataFile.soap",FileMode::Create );
   
   // Construct a SoapFormatter and use it 
   // to serialize the data to the stream.
   SoapFormatter^ formatter = gcnew SoapFormatter;
   try
   {
      formatter->Serialize( fs, addresses );
   }
   catch ( SerializationException^ e ) 
   {
      Console::WriteLine( "Failed to serialize. Reason: {0}", e->Message );
      throw;
   }
   finally
   {
      fs->Close();
   }

}

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.soap",FileMode::Open );
   try
   {
      SoapFormatter^ formatter = gcnew SoapFormatter;
      
      // 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 to the console.
   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()
{
   Serialize();
   Deserialize();
}
using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization;

// Note: When building this code, you must reference the
// System.Runtime.Serialization.Formatters.Soap.dll assembly.
using System.Runtime.Serialization.Formatters.Soap;

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.
        // Use a file stream here.
        FileStream fs = new FileStream("DataFile.soap", FileMode.Create);

        // Construct a SoapFormatter and use it
        // to serialize the data to the stream.
        SoapFormatter formatter = new SoapFormatter();
        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.soap", FileMode.Open);
        try
        {
            SoapFormatter formatter = new SoapFormatter();

            // 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 to the console.
        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

' Note: When building this code, you must reference the
' System.Runtime.Serialization.Formatters.Soap.dll assembly.
Imports System.Runtime.Serialization.Formatters.Soap


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.
      ' Use a file stream here.
      Dim fs As New FileStream("DataFile.soap", FileMode.Create)

      ' Construct a SoapFormatter and use it 
      ' to serialize the data to the stream.
      Dim formatter As New SoapFormatter
      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.soap", FileMode.Open)
      Try
         Dim formatter As New SoapFormatter

         ' 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 to the console.
      Dim de As DictionaryEntry
      For Each de In addresses
         Console.WriteLine("{0} lives at {1}.", de.Key, de.Value)
      Next
   End Sub
End Module

Poznámky

Note

Tato třída je zastaralá.

Warning

BinaryFormatter je nezabezpečený a nedá se zabezpečit. Další informace naleznete v příručce zabezpečení BinaryFormatter.

Třídy SoapFormatter implementují BinaryFormatter rozhraní pro podporu vzdálených volání procedur (RPCS) a IRemotingFormatter rozhraní (zděděno IFormatter) pro podporu serializace grafu IRemotingFormatter objektů. Třída SoapFormatter také podporuje rpcs s ISoapMessage objekty, bez použití IRemotingFormatter funkce.

Během rpcs IRemotingFormatter rozhraní umožňuje specifikaci dvou samostatných grafů objektů: graf objektů k serializaci a další graf, který obsahuje pole objektů hlaviček, které sdělují informace o vzdáleném volání funkce (například ID transakce nebo podpis metody). Pro správnou serializaci musí být kořenovým objektem prvního grafu objekt, který implementuje IMethodCallMessage rozhraní nebo IMethodReturnMessage rozhraní.

Během deserializace RPC HeaderHandler je delegát určen pro Deserialize metodu formátovače. Infrastruktura vzdálené komunikace používá HeaderHandler delegáta k vytvoření objektu, který podporuje ISerializable rozhraní. Tento objekt obsahuje informace uložené v záhlavích a stane se kořenem grafu vráceného deserializátorem.

Může SoapFormatter také zpracovávat rpcs vytvořené s objekty, které implementují ISoapMessage rozhraní. Chcete-li vytvořit RPC bez použití IRemotingFormatter funkce, umístěte objekt, který podporuje ISoapMessage rozhraní v kořenovém adresáři grafu, který je serializován. Chcete-li deserializovat RPC vytvořený tímto způsobem TopObject , musí být vlastnost nastavena na jiný objekt, který podporuje ISoapMessage rozhraní, a obsahuje příslušné informace o vzdáleném volání.

Objekty TimeSpan jsou serializovány podle normy ISO 8601: 1998 oddíl 5.5.3.2.1 "Alternativní".

Konstruktory

Name Description
SoapFormatter()

Inicializuje novou instanci SoapFormatter třídy s výchozími hodnotami vlastností.

SoapFormatter(ISurrogateSelector, StreamingContext)

Inicializuje novou instanci SoapFormatter třídy se zadaným ISurrogateSelector a StreamingContext.

Vlastnosti

Name Description
AssemblyFormat

Získá nebo nastaví chování deserializátoru s ohledem na hledání a načítání sestavení.

Binder

Získá nebo nastaví SerializationBinder , který řídí vazby serializovaného objektu na typ.

Context

Získá nebo nastaví StreamingContext použité s tímto SoapFormatter.

FilterLevel

Získá nebo nastaví TypeFilterLevel automatické deserializace pro vzdálené komunikace .NET Framework.

SurrogateSelector

Získá nebo nastaví SurrogateSelector , že řídí nahrazení typu během serializace a deserializace.

TopObject

Získá nebo nastaví, ISoapMessage do kterého je top objekt SOAP deserializován.

TypeFormat

Získá nebo nastaví formát, ve kterém jsou popisy typů rozloženy v serializovaném datovém proudu.

Metody

Name Description
Deserialize(Stream, HeaderHandler)

Deserializuje datový proud do objektového grafu se všemi záhlavími v daném datovém proudu, které daný datový proud zpracovává HeaderHandler.

Deserialize(Stream)

Deserializuje data v poskytnutém datovém proudu a rekonstituuje graf objektů.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
Serialize(Stream, Object, Header[])

Serializuje objekt nebo graf objektů se zadaným kořenem na danou Stream ve formátu RPC (Remote Procedure Call).

Serialize(Stream, Object)

Serializuje objekt nebo graf objektů se zadaným kořenem daného objektu Stream.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro