SoapFormatter Osztály

Definíció

SOAP formátumban szerializál és deszerializál egy objektumot vagy a csatlakoztatott objektumok teljes gráfját.

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
Öröklődés
SoapFormatter
Megvalósítás

Példák

#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

Megjegyzések

Note

Ez az osztály elavult.

Warning

BinaryFormatter nem biztonságos, és nem lehet biztonságossá tenni. További információt a BinaryFormatter biztonsági útmutatójában talál.

SoapFormatter Az BinaryFormatter és az osztályok implementálják az interfészt a IRemotingFormatter távoli eljáráshívások (RPC-k) támogatására, és az IFormatter interfészt (a IRemotingFormatter) az objektumok gráfjainak szerializálásának támogatására. Az SoapFormatter osztály az objektumokkal rendelkező ISoapMessage RPC-ket is támogatja a IRemotingFormatter funkciók használata nélkül.

Az RPC-k során az IRemotingFormatter interfész két különálló objektumgráf specifikációját teszi lehetővé: a szerializálni kívánt objektumok gráfját, valamint egy további gráfot, amely a távoli függvényhívással kapcsolatos információkat (például tranzakcióazonosítót vagy metódus-aláírást) tartalmazó fejlécobjektum-tömböt tartalmaz. A megfelelő szerializáláshoz az első gráf gyökérobjektumának olyan objektumnak kell lennie, amely az interfészt vagy az IMethodCallMessage interfészt IMethodReturnMessage implementálja.

Az RPC deszerializálása során egy HeaderHandler delegált van megadva a Deserialize formázó metódusához. Az újraegyensúlyozási infrastruktúra a HeaderHandler delegált használatával hoz létre egy objektumot, amely támogatja az interfészt ISerializable . Ez az objektum tartalmazza a fejlécekben tárolt információkat, és a deszerializáló által visszaadott gráf gyökerévé válik.

A SoapFormatter rendszer képes kezelni az interfészt megvalósító ISoapMessage objektumokkal előállított RPC-ket is. Ha a IRemotingFormatter funkciók használata nélkül szeretne RPC-t létrehozni, helyezzen el egy objektumot, amely támogatja a ISoapMessage felületet a szerializált gráf gyökerénél. Az ilyen módon létrehozott RPC deszerializálásához a TopObject tulajdonságot egy olyan objektumra kell beállítani, amely támogatja a ISoapMessage felületet, és tartalmazza a vonatkozó távoli hívási információkat.

A TimeSpan-objektumok szerializálva vannak az ISO 8601: 1998 5.5.3.2.1 "Alternatív" szabvány szerint.

Konstruktorok

Name Description
SoapFormatter()

Inicializálja az osztály új példányát alapértelmezett SoapFormatter tulajdonságértékekkel.

SoapFormatter(ISurrogateSelector, StreamingContext)

Inicializálja az osztály új példányát a SoapFormatter megadott ISurrogateSelector és StreamingContexta .

Tulajdonságok

Name Description
AssemblyFormat

Lekéri vagy beállítja a deszerializáló viselkedését a szerelvények megkeresése és betöltése tekintetében.

Binder

Lekéri vagy beállítja egy SerializationBinder szerializált objektum típushoz kötését vezérlő vagy vezérlő objektumot.

Context

Ezzel a beállítással lekéri vagy beállítja a StreamingContext használt elemet SoapFormatter.

FilterLevel

Lekéri vagy beállítja az automatikus deszerializálás TypeFilterLevel .NET-keretrendszer újrabontásához.

SurrogateSelector

Lekéri vagy beállítja a SurrogateSelector típushelyettesítést a szerializálás és a deszerializálás során.

TopObject

Lekéri vagy beállítja a ISoapMessage SOAP felső objektum deszerializálását.

TypeFormat

Lekéri vagy beállítja azt a formátumot, amelyben a típusleírások a szerializált streamben vannak elhelyezve.

Metódusok

Name Description
Deserialize(Stream, HeaderHandler)

Deszerializálja a streamet egy objektumgráfba, amelyben a streamben lévő összes fejlécet az adott HeaderHandler.

Deserialize(Stream)

Deszerializálja a megadott adatfolyam adatait, és újrakonfigurálja az objektumok gráfját.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Serialize(Stream, Object, Header[])

Szerializál egy objektumot vagy objektumdiagramot a megadott gyökérrel a Stream SOAP Távoli eljáráshívás (RPC) formátumban.

Serialize(Stream, Object)

Szerializál egy objektumot vagy objektumdiagramot az adott Streamgyökérrel.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes: