0
        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]只在反序列化中?

4

1 回答 1

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>));
于 2014-09-24T19:01:17.310 回答