<分区>
下面是我们生产代码的摘录,它展示了问题的核心。第一次运行后,序列化列表正确地包含 3 个项目。但是在第二次(或更多次)运行应用程序之后,每次将 3 个项目添加到 xml 和反序列化列表中。即在第一次运行 ABC 之后显示,但在第二次 ABCABC 之后和第三次 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
}
如何解决这个问题?