1

我的代码

partial class User
{
    [OnSerializing]
    public void ClearPassword()
    {
        Password = null;
    }
}

Linq 到 SQL

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[User]")]
[global::System.Runtime.Serialization.DataContractAttribute()]
public partial class User : INotifyPropertyChanging, INotifyPropertyChanged
{
    [global::System.Runtime.Serialization.OnSerializingAttribute()]
    [global::System.ComponentModel.EditorBrowsableAttribute(EditorBrowsableState.Never)]
    public void OnSerializing(StreamingContext context)
    {
        this.serializing = true;
    }
}

结果

无效的属性。“AuthenticationManager.User”类型中的“Void ClearPassword()”和“Void OnSerializing(System.Runtime.Serialization.StreamingContext)”都有“System.Runtime.Serialization.OnSerializingAttribute”。

现在,微软的工程师们是否创造了一种方法,让两个独立的代码块在序列化时独立触发一些事件?特别是考虑到他们劫持了这个事件来设置的事实this.serializing = true

提前致谢。

4

1 回答 1

1

如果您的Password属性正在使用支持字段,您可以将其设置为NonSerialized

  [XmlIgnore]
  [ScriptIgnore]
  public string Password { get { return _password;}  set { _password = value; } }

  [NonSerialized]
  private string _password;
于 2014-01-04T19:56:21.403 回答