21
次の例を示します。デシリアライズ時にコンストラクタが見つかりませんでしたか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace SerializationTest
{
[Serializable]
class Foo : Dictionary<int, string>
{
}
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
foo[1] = "Left";
foo[2] = "Right";
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, foo);
stream.Seek(0, SeekOrigin.Begin);
formatter.Deserialize(stream);
}
}
}
フォーマッタがFooのコンストラクタを見つけることができないため、最後の行でSerializationExceptionがスローされます。何故ですか?
辞書はISerializableを実装しているため、もちろんです。 –
SerializationInfoクラスとStreamingContextクラスについては、 ** System.Runtime.Serialization **名前空間にあります。 フルパスは** System.Runtime.Serialization.SerializationInfo **です。 – Wappenull