SerializationInfo.AddValue メソッド
SerializationInfo に値を追加します。
オーバーロードの一覧
SerializationInfo に Boolean 型の値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Boolean)
SerializationInfo に 8 ビット符号なし整数値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Byte)
[JScript] public function AddValue(String, Byte);
SerializationInfo に Unicode 文字値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Char)
[JScript] public function AddValue(String, Char);
SerializationInfo に DateTime 値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, DateTime)
SerializationInfo に 10 進値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Decimal)
SerializationInfo に倍精度浮動小数点値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Double)
SerializationInfo に 16 ビット符号付き整数値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Short)
[JScript] public function AddValue(String, Int16);
SerializationInfo に 32 ビット符号付き整数値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Integer)
[JScript] public function AddValue(String, int);
SerializationInfo に 64 ビット符号付き整数値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Long)
[JScript] public function AddValue(String, long);
指定したオブジェクトを SerializationInfo に追加します。ここで、指定した名前に関連付けられます。
[Visual Basic] Overloads Public Sub AddValue(String, Object)
SerializationInfo に 8 ビット符号付き整数値を追加します。このメソッドは、CLS と互換性がありません。
[Visual Basic] Overloads Public Sub AddValue(String, SByte)
[JScript] public function AddValue(String, SByte);
SerializationInfo に単精度浮動小数点値を追加します。
[Visual Basic] Overloads Public Sub AddValue(String, Single)
[JScript] public function AddValue(String, float);
SerializationInfo に 16 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。
[Visual Basic] Overloads Public Sub AddValue(String, UInt16)
SerializationInfo に 32 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。
[Visual Basic] Overloads Public Sub AddValue(String, UInt32)
SerializationInfo に 64 ビット符号なし整数値を追加します。このメソッドは、CLS と互換性がありません。
[Visual Basic] Overloads Public Sub AddValue(String, UInt64)
値を SerializationInfo に追加します。ここで、 value が name に関連付けられ、 Type type の値としてシリアル化されます。
[Visual Basic] Overloads Public Sub 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 名前空間