この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

BinaryFormatter クラス

 

オブジェクト、または接続されているオブジェクトのグラフ全体を、バイナリ形式でシリアル化および逆シリアル化します。

名前空間:   System.Runtime.Serialization.Formatters.Binary
アセンブリ:  mscorlib (mscorlib.dll 内)

System.Object
  System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

[ComVisibleAttribute(true)]
public sealed class BinaryFormatter : IRemotingFormatter, IFormatter

名前説明
System_CAPS_pubmethodBinaryFormatter()

BinaryFormatter クラスの新しいインスタンスを既定値で初期化します。

System_CAPS_pubmethodBinaryFormatter(ISurrogateSelector, StreamingContext)

新しいインスタンスを初期化、 BinaryFormatter クラスの指定したサロゲート セレクターとストリーミング コンテキストを使用します。

名前説明
System_CAPS_pubpropertyAssemblyFormat

取得または検索とアセンブリの読み込みに関するデシリアライザーの動作を設定します。

System_CAPS_pubpropertyBinder

型のオブジェクトを取得または SerializationBinder 型をシリアル化されたオブジェクトのバインドを制御します。

System_CAPS_pubpropertyContext

取得または設定、 StreamingContext このフォーマッタのです。

System_CAPS_pubpropertyFilterLevel

取得または設定、 TypeFilterLevel の自動逆シリアル化、 BinaryFormatter を実行します。

System_CAPS_pubpropertySurrogateSelector

取得または設定、 ISurrogateSelector コントロール型のシリアル化および逆シリアル化中に置換することです。

System_CAPS_pubpropertyTypeFormat

取得またはする種類の説明のシリアル化ストリームのレイアウト形式を設定します。

名前説明
System_CAPS_pubmethodDeserialize(Stream)

オブジェクト グラフには、指定したストリームを逆シリアル化します。

System_CAPS_pubmethodDeserialize(Stream, HeaderHandler)

オブジェクト グラフには、指定したストリームを逆シリアル化します。 指定された HeaderHandler ストリーム内の任意のヘッダーを処理します。

System_CAPS_pubmethodDeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage)

提供されているリモート メソッド呼び出しへの応答を逆シリアル化 Streamします。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodSerialize(Stream, Object)

指定したストリームには、オブジェクト、または先頭 (ルート) を指定したオブジェクトのグラフをシリアル化します。

System_CAPS_pubmethodSerialize(Stream, Object, Header[])

指定したヘッダーを添付する、指定したストリームには、オブジェクト、または先頭 (ルート) を指定したオブジェクトのグラフをシリアル化します。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

System_CAPS_pubmethodUnsafeDeserialize(Stream, HeaderHandler)

オブジェクト グラフには、指定したストリームを逆シリアル化します。 指定された HeaderHandler ストリーム内の任意のヘッダーを処理します。

System_CAPS_pubmethodUnsafeDeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage)

提供されているリモート メソッド呼び出しへの応答を逆シリアル化 Streamします。

The T:System.Runtime.Serialization.Formatters.Soap.SoapFormatter and T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter classes implement the T:System.Runtime.Remoting.Messaging.IRemotingFormatter interface to support remote procedure calls (RPCs), and the T:System.Runtime.Serialization.IFormatter interface (inherited by the T:System.Runtime.Remoting.Messaging.IRemotingFormatter) to support serialization of a graph of objects. The T:System.Runtime.Serialization.Formatters.Soap.SoapFormatter class also supports RPCs with T:System.Runtime.Serialization.Formatters.ISoapMessage objects, without using the T:System.Runtime.Remoting.Messaging.IRemotingFormatter functionality.

During RPCs, the T:System.Runtime.Remoting.Messaging.IRemotingFormatter interface allows the specification of two separate object graphs: the graph of objects to serialize, and an additional graph that contains an array of header objects that convey information about the remote function call (for example, transaction ID or a method signature).

RPCs that use the T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter separate into two distinct parts: method calls, which are sent to the server with the remote object that contains the method called, and method responses, which are sent from the server to the client with the status and response information from the called method.

During serialization of a method call the first object of the object graph must support the T:System.Runtime.Remoting.Messaging.IMethodCallMessage interface. To deserialize a method call, use the M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream) method with the T:System.Runtime.Remoting.Messaging.HeaderHandler parameter. The remoting infrastructure uses the T:System.Runtime.Remoting.Messaging.HeaderHandler delegate to produce an object that supports the T:System.Runtime.Serialization.ISerializable interface. When the T:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter invokes the T:System.Runtime.Remoting.Messaging.HeaderHandler delegate, it returns the URI of the remote object with the method that is being called. The first object in the graph returned supports the T:System.Runtime.Remoting.Messaging.IMethodCallMessage interface.

The serialization procedure for a method response is identical to that of a method call, except the first object of the object graph must support the T:System.Runtime.Remoting.Messaging.IMethodReturnMessage interface. To deserialize a method response, use the M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler,System.Runtime.Remoting.Messaging.IMethodCallMessage) method. To save time, details about the caller object are not sent to the remote object during the method call. These details are instead obtained from the original method call, which is passed to the M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler,System.Runtime.Remoting.Messaging.IMethodCallMessage) method in the T:System.Runtime.Remoting.Messaging.IMethodCallMessage parameter. The first object in the graph returned by the M:System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.DeserializeMethodResponse(System.IO.Stream,System.Runtime.Remoting.Messaging.HeaderHandler,System.Runtime.Remoting.Messaging.IMethodCallMessage) method supports the T:System.Runtime.Remoting.Messaging.IMethodReturnMessage interface.

System_CAPS_security セキュリティ メモ

Using binary serialization to deserialize untrusted data can lead to security risks. For more information, see Untrusted Data Security Riskshttp://go.microsoft.com/fwlink/?LinkId=330378.

Any unpaired surrogate characters are lost in binary serialization. For example, the following string contains a high surrogate Unicode character (\ud800) in between the two Test words:

Test\ud800Test

Before serialization, the byte array of the string is as follows:

Byte Array Value

Character

84

T

101

e

115

s

116

t

55296

\ud800

84

T

101

e

115

s

116

t

After deserialization, the high surrogate Unicode character is lost:

Byte Array Value

Character

84

T

101

e

115

s

116

t

84

T

101

e

115

s

116

t

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);
        }
    }
}

.NET Framework
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: