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」があります。

さて、Microsoft のエンジニアは、2 つの別々のコード ブロックが互いに独立してシリアル化でいくつかのイベントを発生させる方法を作成したのでしょうか? 特に、彼らがこのイベントをハイジャックして設定するという事実を考えると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 に答える