私はシリアライゼーションについて読んでいて、これまでのところ BinaryFormatter と SoapFormatter をいじっています。これまでのところ、非常に良好です。すべてが完全にシリアライズされ、デシリアライズされています。
ただし、以下のコードを試すと、データファイルに名前の情報が含まれていないと予想されますが、含まれています。フィールドで SoapIgnore を指定すると、なぜそれが含まれるのでしょうか?
Age-fieldも試してみましSoapAttribute("SomeAttribute")
たが、違いはありませんでした。フレームワークのバージョンは 2.0 に設定されていますが、3.5 と 4.0 でも同じことが起こります。
using System;
using System.Runtime.Serialization.Formatters.Soap;
using System.IO;
using System.Xml.Serialization;
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Age = 42;
p.Name = "Mr Smith";
SoapFormatter formatter = new SoapFormatter();
FileStream fs = new FileStream(@"c:\test\data.txt", FileMode.Create);
formatter.Serialize(fs, p);
}
}
[Serializable]
class Person
{
public int Age;
[SoapIgnore]
public string Name;
}