Xml仅在序列化中忽略

本文关键字:序列化 Xml | 更新日期: 2023-09-27 18:24:12

        private string _password;
        public string Password
        {
            get 
            {
                return _password; 
            }
            set
            {
                if (_password != value)
                {
                    _password = PasswordEncryptor.Encode(value);
                    OnPropChanged("Password");                
                }
            }
        }

PasswordEncryptor是一个类,我在其中调用 Encode 方法进行编码。Password编码后,通过XmlSerializer将其序列化到磁盘中的文件。但是,每次程序启动时,文件都会反序列化,并在 setPasswordEncryptor.Encode()再次对Password进行编码。有没有办法只能在反序列化中[XmlIgnore]它?

Xml仅在序列化中忽略

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>));
相关文章: