有没有办法制作一个可更新和可序列化的类?c#

Is there exists some way how to make a updatable and serializable class? c#

提问人:Snail 提问时间:8/29/2023 更新时间:8/29/2023 访问量:30

问:

我目前有一个类,它有一个.但是一段时间后,需要在类中进行一些更改(例如,将属性替换为新类),之后在将旧类反序列化为新类时数据将丢失,否则将导致根本无法反序列化文件。ProfileNameNamePersonalInfo

//Old class
[Serializable, XmlRoot] public class Profile
{
    [XmlAttribute] public string Name { get; set; }
}
//New class
[Serializable, XmlRoot] public class Profile
{
    [XmlElement] public PersonalInfo PersonalInfo { get; set; }
}
//New element which will replace old "Name" Attribute
[Serializable, XmlRoot] public class PersonalInfo
{
    [XmlAttribute] public string Name { get; set; }
}

我有一个想法,为新版本的属性创建一个不同的属性,以便尝试反序列化新版本会导致错误(如果文件描述了旧版本),之后程序必须将数据读入旧类,然后以编程方式将它们传输到新类。NameXmlRoot

这种方法有效,但如果类中有其他更改,此解决方案将导致将来的额外工作。这就是为什么我现在正在考虑如何使这个过程不那么费力,如果类有两个以上的版本(1、2、3),那么数据传输将按照从 1 到 2 和到 3 的顺序进行。

C# XML 序列化

评论


答: 暂无答案