2014-04-04 65 views
3

我有一個屬性類,我想在json反序列化中使用,但我想省略json序列化。使一個屬性反序列化,但不可序列化

例子: 我有一類用戶:

public class UserDTO 
    { 
     public string UserName { get; set; } 
     public string Password { get; set; } 

    } 

,我用它的ASP.NET Web API。

我使用此類登錄並獲取所有用戶。 顯然,在獲取我想只看到用戶名,但在登錄我需要用戶名和密碼。

我嘗試使用屬性[IgnoreDataMember]

public class UserDTO 
{ 
    public string UserName { get; set; } 
    [IgnoreDataMember] 
    public string Password { get; set; } 

} 

或裝飾我的類DataContract

[DataContract] 
public class UserDTO 
    { 
     [DataMember] 
     public string UserName { get; set; } 

     public string Password { get; set; } 

    } 

但在這種模式下,我不能登錄,如果確我不使用屬性[DataContract][IgnoreDataMember]我可以使用登錄,但在得到我看到密碼。

我也嘗試使用後臺字段[NotSerialized],如建議here,但我獲得了相同的結果。

+0

這串?它很重要。 –

回答

1

根據串行器,你可能能夠簡單地添加:

public bool ShouldSerializePassword() { return false; } 

這是一個衆所周知的模式,在許多串行工作,但不是全部。

另一種常見的模式是:

public bool PasswordSpecified { get { return false; } set {} } 

但是,這是棘手的,因爲你需要告訴串行忽略它 - 例如用[XmlIgnore, ScriptIgnore, IgnoreDataMember]

無論哪種方式,你可能想要添加:

[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 

(防止該屬性或方法出現在太多地方)

最後一個選擇就是:序列化時,不給.Password值,P

相關問題