2
以下は、問題の中核を示す生産コードの抜粋です。最初の実行後、シリアル化されたリストには3つの項目が正しくあります。しかし、アプリケーションを2回目以降実行した後は、xmlに3つのアイテムが追加され、デシリアライズされたリストに追加されます。すなわち、最初の実行後にABCが表示されるが、2番目のABCABCの後および3番目のABCABCABCの後に表示される。脱塩初期化リスト
Initialzierは他の目的で必要とされ、削除することはできません。
class Program
{
static void Main(string[] args)
{
var ser = new XmlSerializer(typeof(Ser));
Ser s;
try
{
using (var sr = new StreamReader("Test.xml"))
{
s = ser.Deserialize(sr) as Ser;
}
}
catch
{
s = new Ser();
}
using (var sw = new StreamWriter("Test.xml"))
{
ser.Serialize(sw, s);
}
foreach (var text in s.List)
{
Console.WriteLine(text);
}
}
}
public class Ser
{
public List<string> List { get; set; }= new List<string> {"A", "B", "C"}; //This initializer is a must
}
この問題を解決するにはどうすればよいですか?