Export (0) Print
Expand All

SerializationInfo.AddValue Method

Adds a value into the SerializationInfo.

Overload List

Adds a Boolean value into the SerializationInfo.

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

Adds an 8-bit unsigned integer value into the SerializationInfo.

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

Adds a Unicode character value into the SerializationInfo.

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

Adds a DateTime value into the SerializationInfo.

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

Adds a Decimal value into the SerializationInfo.

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

Adds a double-precision floating-point value into the 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);

Adds a 16-bit signed integer value into the SerializationInfo.

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

Adds a 32-bit signed integer value into the SerializationInfo.

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

Adds a 64-bit signed integer value into the SerializationInfo.

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

Adds the specified object into the SerializationInfo, where it is associated with a specified name.

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

Adds an 8-bit signed integer value into the SerializationInfo. This method is not CLS-compliant.

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

Adds a single-precision floating-point value into the 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);

Adds a 16-bit unsigned integer value into the SerializationInfo. This method is not CLS-compliant.

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

Adds a 32-bit unsigned integer value into the SerializationInfo. This method is not CLS-compliant.

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

Adds a 64-bit unsigned integer value into the SerializationInfo. This method is not CLS-compliant.

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

Adds a value into the SerializationInfo, where value is associated with name and is serialized as being of 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);

Example

[Visual Basic, C#, C++] Note   This example shows how to use one of the overloaded versions of AddValue. For other examples that might be available, see the individual overload topics.
[Visual Basic] 
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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

See Also

SerializationInfo Class | SerializationInfo Members | System.Runtime.Serialization Namespace

Show:
© 2014 Microsoft