我正在尝试读取已经保存的xml,因为xml已经序列化了对象。我正在反序列化,以便从文件读取c#中的对象。
class Person
{
public string xyz { get; set; } // This is how an example class looks like.
}
现在我需要将此属性的数据类型更改为EncryptedString类型
所以现在我的课看起来像
class Person
{
public EncryptedString xyz { get; set; } = new EncryptedString();
}
当我反序列化对象并签入人员的实例时,我得到xyz.stringvalue==null。而如果我使用xyz是字符串类型字段时的旧类结构,我会得到xyz的原始值。注意:EncryptedString是一个自定义对象,它接受一个字符串并对其进行加密
检查XML版本控制,这似乎是您要使用的东西。
一种方法是用新版本标记xyz
,同时创建仅用于反序列化目的的支持属性serialization_xyz
,在getter上将设置实际xyz
的值
如果您已经准备好手动读取上下文,并且不想有一些变通方法字段,请检查Serializations回调
public string Value
{ //For backward compatibility
get => null;
set
{
if (!string.IsNullOrEmpty(value))
KeyValue.Value = value;
}
}
public EncryptedString KeyValue { get; set; } = new EncryptedString();
这个对我很有用。当我加载文件时,它将字符串值保存在Encrypted string keyvalue中,当它将由于值为null而将其序列化时,它不会存储value元素。