private string _password;
public string Password
{
get
{
return _password;
}
set
{
if (_password != value)
{
_password = PasswordEncryptor.Encode(value);
OnPropChanged("Password");
}
}
}
PasswordEncryptor
是一个我调用Encode
方法进行编码的类。在Password
编码后,XmlSerializer
将其序列化为磁盘中的文件。但是,每次程序启动时,都会对文件进行反序列化,并在set
中,PasswordEncryptor.Encode()
再次对Password
进行编码。有没有办法[XmlIgnore]
它只能用于反序列化?
答案 0 :(得分:1)
XmlAttributeOverrides
可以在这种情况下提供帮助。
来自MSDN
允许您在覆盖属性,字段和类属性时覆盖它们 使用XmlSerializer序列化或反序列化对象
使用此方法,我们可以在反序列化期间忽略特定属性。
这将是这样的......
XmlElementAttribute attr = new XmlElementAttribute();
attr.ElementName = "<elementName>";
XmlAttributes attrs = new XmlAttributes();
attrs.XmlIgnore = true;
attrs.XmlElements.Add(attr);
XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides();
attrOverrides.Add(typeof(<className>), "<elementName>", attrs);
// use this when deserializing
XmlSerializer s = new XmlSerializer(typeof(<className>), attrOverrides);
// use this when serializing
XmlSerializer s = new XmlSerializer(typeof(<className>));