次の方法で共有


SerializationInfo.AddValue メソッド

SerializationInfo に値を追加します。

オーバーロードの一覧

SerializationInfo に Boolean 型の値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Boolean)

[C#] public void AddValue(string, bool);

[C++] public: void AddValue(String*, bool);

[JScript] public function AddValue(String, Boolean);

SerializationInfo に 8 ビット符号なし整数値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Byte)

[C#] public void AddValue(string, byte);

[C++] public: void AddValue(String*, unsigned char);

[JScript] public function AddValue(String, Byte);

SerializationInfo に Unicode 文字値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Char)

[C#] public void AddValue(string, char);

[C++] public: void AddValue(String*, __wchar_t);

[JScript] public function AddValue(String, Char);

SerializationInfoDateTime 値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, DateTime)

[C#] public void AddValue(string, DateTime);

[C++] public: void AddValue(String*, DateTime);

[JScript] public function AddValue(String, DateTime);

SerializationInfo に 10 進値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Decimal)

[C#] public void AddValue(string, decimal);

[C++] public: void AddValue(String*, Decimal);

[JScript] public function AddValue(String, Decimal);

SerializationInfo に倍精度浮動小数点値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Double)

[C#] public void AddValue(string, double);

[C++] public: void AddValue(String*, double);

[JScript] public function AddValue(String, double);

SerializationInfo に 16 ビット符号付き整数値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Short)

[C#] public void AddValue(string, short);

[C++] public: void AddValue(String*, short);

[JScript] public function AddValue(String, Int16);

SerializationInfo に 32 ビット符号付き整数値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Integer)

[C#] public void AddValue(string, int);

[C++] public: void AddValue(String*, int);

[JScript] public function AddValue(String, int);

SerializationInfo に 64 ビット符号付き整数値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Long)

[C#] public void AddValue(string, long);

[C++] public: void AddValue(String*, __int64);

[JScript] public function AddValue(String, long);

指定したオブジェクトを SerializationInfo に追加します。ここで、指定した名前に関連付けられます。

[Visual Basic] Overloads Public Sub AddValue(String, Object)

[C#] public void AddValue(string, object);

[C++] public: void AddValue(String*, Object*);

[JScript] public function AddValue(String, Object);

SerializationInfo に 8 ビット符号付き整数値を追加します。このメソッドは、CLS と互換性がありません。

[Visual Basic] Overloads Public Sub AddValue(String, SByte)

[C#] public void AddValue(string, sbyte);

[C++] public: void AddValue(String*, char);

[JScript] public function AddValue(String, SByte);

SerializationInfo に単精度浮動小数点値を追加します。

[Visual Basic] Overloads Public Sub AddValue(String, Single)

[C#] public void AddValue(string, float);

[C++] public: void AddValue(String*, float);

[JScript] public function AddValue(String, float);

SerializationInfo に 16 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。

[Visual Basic] Overloads Public Sub AddValue(String, UInt16)

[C#] public void AddValue(string, ushort);

[C++] public: void AddValue(String*, unsigned short);

[JScript] public function AddValue(String, UInt16);

SerializationInfo に 32 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。

[Visual Basic] Overloads Public Sub AddValue(String, UInt32)

[C#] public void AddValue(string, uint);

[C++] public: void AddValue(String*, unsigned int);

[JScript] public function AddValue(String, UInt32);

SerializationInfo に 64 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。

[Visual Basic] Overloads Public Sub AddValue(String, UInt64)

[C#] public void AddValue(string, ulong);

[C++] public: void AddValue(String*, unsigned __int64);

[JScript] public function AddValue(String, UInt64);

値を SerializationInfo に追加します。ここで、 valuename に関連付けられ、 Type type の値としてシリアル化されます。

[Visual Basic] Overloads Public Sub AddValue(String, Object, Type)

[C#] public void AddValue(string, object, Type);

[C++] public: void AddValue(String*, Object*, Type*);

[JScript] public function AddValue(String, Object, Type);

使用例

[Visual Basic, C#, C++] メモ   ここでは、AddValue のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
Imports System
Imports System.IO
Imports System.Collections
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization


' There should be only one instance of this type per AppDomain.
<Serializable()> Public NotInheritable Class Singleton
   Implements ISerializable

   ' This is the one instance of this type.
   Private Shared ReadOnly theOneObject As New Singleton

   ' Here are the instance fields.
   Public someString As String
   Public someNumber As Int32

   ' Private constructor allowing this type to construct the Singleton.
   Private Sub New()
      ' Do whatever is necessary to initialize the Singleton.
      someString = "This is a string field"
      someNumber = 123
   End Sub

   ' A method returning a reference to the Singleton.
   Public Shared Function GetSingleton() As Singleton
      Return theOneObject
   End Function

   ' A method called when serializing a Singleton.
   Private Sub GetObjectData(ByVal info As SerializationInfo, _
      ByVal context As StreamingContext) _
      Implements ISerializable.GetObjectData

      ' Instead of serializing this object, we will  
      ' serialize a SingletonSerializationHelp instead.
      info.SetType(GetType(SingletonSerializationHelper))
      ' No other values need to be added.
   End Sub

   ' Note: ISerializable's special constructor is not necessary 
   ' because it is never called.
End Class


<Serializable()> Friend NotInheritable Class SingletonSerializationHelper
   Implements IObjectReference
   ' This object has no fields (although it could).

   ' GetRealObject is called after this object is deserialized.
   Public Function GetRealObject(ByVal context As StreamingContext) As Object Implements IObjectReference.GetRealObject
      ' When deserialiing this object, return a reference to 
      ' the Singleton object instead.
      Return Singleton.GetSingleton()
   End Function
End Class


Class App
   <STAThread()> Shared Sub Main()
      Dim fs As New FileStream("DataFile.dat", FileMode.Create)

      Try
         ' Construct a BinaryFormatter and use it 
         ' to serialize the data to the stream.
         Dim formatter As New BinaryFormatter

         ' Create an array with multiple elements refering to 
         ' the one Singleton object.
         Dim a1() As Singleton = {Singleton.GetSingleton(), Singleton.GetSingleton()}

         ' This displays "True".
         Console.WriteLine("Do both array elements refer to the same object? " & _
            Object.ReferenceEquals(a1(0), a1(1)))

         ' Serialize the array elements.
         formatter.Serialize(fs, a1)

         ' Deserialize the array elements.
         fs.Position = 0
         Dim a2() As Singleton = DirectCast(formatter.Deserialize(fs), Singleton())

         ' This displays "True".
         Console.WriteLine("Do both array elements refer to the same object? " & _
            Object.ReferenceEquals(a2(0), a2(1)))

         ' This displays "True".
         Console.WriteLine("Do all array elements refer to the same object? " & _
            Object.ReferenceEquals(a1(0), a2(0)))
      Catch e As SerializationException
         Console.WriteLine("Failed to serialize. Reason: " & e.Message)
         Throw
      Finally
         fs.Close()
      End Try
   End Sub
End Class

[C#] 
using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;


// There should be only one instance of this type per AppDomain.
[Serializable]
public sealed class Singleton : ISerializable 
{
    // This is the one instance of this type.
    private static readonly Singleton theOneObject = new Singleton();

    // Here are the instance fields.
    public String someString;
    public Int32 someNumber;

    // Private constructor allowing this type to construct the Singleton.
    private Singleton() 
    { 
        // Do whatever is necessary to initialize the Singleton.
        someString = "This is a string field";
        someNumber = 123;
    }

    // A method returning a reference to the Singleton.
    public static Singleton GetSingleton() 
    { 
        return theOneObject; 
    }

    // A method called when serializing a Singleton.
    void ISerializable.GetObjectData(
        SerializationInfo info, StreamingContext context) 
    {
        // Instead of serializing this object, 
        // serialize a SingletonSerializationHelp instead.
        info.SetType(typeof(SingletonSerializationHelper));
        // No other values need to be added.
    }

    // Note: ISerializable's special constructor is not necessary 
    // because it is never called.
}


[Serializable]
internal sealed class SingletonSerializationHelper : IObjectReference 
{
    // This object has no fields (although it could).

    // GetRealObject is called after this object is deserialized.
    public Object GetRealObject(StreamingContext context) 
    {
        // When deserialiing this object, return a reference to 
        // the Singleton object instead.
        return Singleton.GetSingleton();
    }
}


class App 
{
    [STAThread]
    static void Main() 
    {
        FileStream fs = new FileStream("DataFile.dat", FileMode.Create);

        try 
        {
            // Construct a BinaryFormatter and use it 
            // to serialize the data to the stream.
            BinaryFormatter formatter = new BinaryFormatter();

            // Create an array with multiple elements refering to 
            // the one Singleton object.
            Singleton[] a1 = { Singleton.GetSingleton(), Singleton.GetSingleton() };

            // This displays "True".
            Console.WriteLine(
                "Do both array elements refer to the same object? " + 
                (a1[0] == a1[1]));     

            // Serialize the array elements.
            formatter.Serialize(fs, a1);

            // Deserialize the array elements.
            fs.Position = 0;
            Singleton[] a2 = (Singleton[]) formatter.Deserialize(fs);

            // This displays "True".
            Console.WriteLine("Do both array elements refer to the same object? " 
                + (a2[0] == a2[1])); 

            // This displays "True".
            Console.WriteLine("Do all array elements refer to the same object? " 
                + (a1[0] == a2[0]));
        }   
        catch (SerializationException e) 
        {
            Console.WriteLine("Failed to serialize. Reason: " + e.Message);
            throw;
        }
        finally 
        {
            fs.Close();
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Collections;
using namespace System::Runtime::Serialization::Formatters::Binary;
using namespace System::Runtime::Serialization;


private __sealed __gc class SingletonSerializationHelper;

// There should be only one instance of this type per AppDomain.
[Serializable]
public __sealed __gc class Singleton : public ISerializable 
{
    // This is the one instance of this type.
private:
    static Singleton* theOneObject = new Singleton();

    // Here are the instance fields.
public:
    String* someString;
    Int32 someNumber;

    // Private constructor allowing this type to construct the singleton.
private:
    Singleton() 
    { 
        // Do whatever is necessary to initialize the singleton.
        someString = S"This is a String* field";
        someNumber = 123;
    }

    // A method returning a reference to the singleton.
public:
    static Singleton* GetSingleton() 
    { 
        return theOneObject; 
    }

    // A method called when serializing a Singleton.
    void GetObjectData(SerializationInfo* info, StreamingContext context) 
    {
        // Instead of serializing this Object*, we will  
        // serialize a SingletonSerializationHelp instead.
        info->SetType(__typeof(SingletonSerializationHelper));
        // No other values need to be added.
    }

    // NOTE: ISerializable*'s special constructor is NOT necessary 
    // because it's never called
};

[Serializable]
    private __sealed __gc class SingletonSerializationHelper : public IObjectReference 
    {
        // This Object* has no fields (although it could).
        // GetRealObject is called after this Object* is deserialized
    public:
        Object* GetRealObject(StreamingContext context) 
        {
            // When deserialiing this Object*, return a reference to 
            // the singleton Object* instead.
            return Singleton::GetSingleton();
        }
    };

[STAThread]
int main() 
{
    FileStream* fs = new FileStream(S"DataFile.dat", FileMode::Create);

    try 
    {
        // Construct a BinaryFormatter and use it 
        // to serialize the data to the stream.
        BinaryFormatter* formatter = new BinaryFormatter();

        // Create an array with multiple elements refering to 
        // the one Singleton Object*.
        Singleton* a1[] = { Singleton::GetSingleton(), Singleton::GetSingleton() };

        // This displays S"True".
        Console::WriteLine(S"Do both array elements refer to the same Object? {0}", __box((a1->Item[0] == a1->Item[1])));

        // Serialize the array elements.
        formatter->Serialize(fs, a1);

        // Deserialize the array elements.
        fs->Position = 0;
        Singleton* a2[] = (Singleton* __gc[]) formatter->Deserialize(fs);

        // This displays S"True".
        Console::WriteLine(S"Do both array elements refer to the same Object? {0}", __box((a2->Item[0] == a2->Item[1]))); 

        // This displays S"True".
        Console::WriteLine(S"Do all  array elements refer to the same Object? {0}", __box((a1->Item[0] == a2->Item[0])));
    } 
    catch (SerializationException* e) 
    {
        Console::WriteLine(S"Failed to serialize. Reason: {0}", e->Message);
        throw;
    }
    __finally 
    {
        fs->Close();
    }
    return 0;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

参照

SerializationInfo クラス | SerializationInfo メンバ | System.Runtime.Serialization 名前空間