Sdílet prostřednictvím


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

Poznámka

Počínaje rozhraním .NET Framework 2.0 je tato třída zastaralá.

Upozornění

BinaryFormatter je nezabezpečený a není možné ho zabezpečit. Další informace najdete v průvodci zabezpečením BinaryFormatter.

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

Během RPC IRemotingFormatter rozhraní umožňuje specifikaci dvou samostatných grafů objektů: graf objektů, které se mají serializovat, 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 rozhraní IMethodCallMessage nebo IMethodReturnMessage rozhraní.

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

Může SoapFormatter také zpracovávat RPC, které jsou vytvořeny s objekty, které implementují rozhraní ISoapMessage . Chcete-li vytvořit RPC bez použití IRemotingFormatter funkce, umístěte objekt, který podporuje ISoapMessage rozhraní v kořenovém adresáři serializovaného grafu. 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 relevantní vzdálené informace o volání.

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

Konstruktory

SoapFormatter()

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

SoapFormatter(ISurrogateSelector, StreamingContext)

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

Vlastnosti

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í vazbu serializovaného objektu na typ.

Context

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

FilterLevel

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

SurrogateSelector

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

TopObject

Získá nebo nastaví, ISoapMessage do kterého soap horní objekt je deserializována.

TypeFormat

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

Metody

Deserialize(Stream)

Deserializuje data o poskytnutém streamu a rekonstituuje graf objektů.

Deserialize(Stream, HeaderHandler)

Deserializuje datový proud do grafu objektů se všemi záhlavími v daném datovém proudu, které zpracovává daný HeaderHandlerdatový proud .

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

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

Type Získá z aktuální instance.

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

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

(Zděděno od Object)
Serialize(Stream, Object)

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

Serialize(Stream, Object, Header[])

Serializuje objekt nebo graf objektů se zadaným kořenem na danou Stream ve formátu VZDÁLENÉ volání procedur SOAP (RPC).

ToString()

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

(Zděděno od Object)

Platí pro