gpt4 book ai didi

c# - 从自动实现的属性切换时,如何保持可序列化类向后兼容

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:14 24 4
gpt4 key购买 nike

我有这样一个类:

[Serializable]
public class MyClass
{
public Dictionary<string, int> MyProperty { get; set; }
}

我需要更改 MyProperty 以使其不再自动实现。我的问题是,这会破坏兼容性吗?换句话说,在此更改之前序列化的 MyClass 实例是否会在此更改之后正确反序列化?我需要做些什么来保证这一点吗?什么规则决定了它是如何工作的?

作为引用,我想要这样的东西:

[Serializable]
public class MyClass
{
private Dictionary<string, int> _myProperty;
public Dictionary<string, int> MyProperty
{
get { return this._myProperty; }
set { Validate(value); this._myProperty = value; }
}
}

编辑:我尝试了这个特定的玩具示例,它似乎有效,但这并没有给我很大的信心,因为我的真实示例更加复杂。我想了解基本规则,以便在测试前做出有根据的猜测。

最佳答案

您可以使用 custom deserialization通过旧名称提取字段的值。

或者,将此自动属性设为虚拟并从中派生一个类。这样您就可以使用 base.MyProperty 访问自动命名的支持字段。您可以在派生类中有一个优先使用的新字段。

关于c# - 从自动实现的属性切换时,如何保持可序列化类向后兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com