2010-02-04 18 views
14

Bir sınıfı XML'den serileştiriyor/kaldırıyoruz ancak sınıfta hariç tutmak istediğimiz özellikler ve alanlar var.NonSerialized ve Xml.Serialization.XmlIgnore arasındaki fark?

nitelikleri işi yapmak gibi görünüyor ama aralarındaki fark nedir System.Xml.Serialization.XmlIgnore ve System.NonSerialized? Görünüşe göre, sınıfın özellikleri veya alanları üzerinde XmlIgnore kullanabiliriz. Ancak NonSerialized yalnızca alanlarda kullanılabilir. XmlIgnore'u her durumda kullanmamanın bir nedeni var mı, eğer öyleyse NonSerialized niteliğinin amacı nedir ve kullanımdaki fark nedir?


Bu

izin verilir:

<System.NonSerialized()> _ 
Public Foo As String 

Bu bırakılır:

<System.Xml.Serialization.XmlIgnore()> _ 
Public Foo As String 

Bu bırakılır:

<System.Xml.Serialization.XmlIgnore()> _ 
Public Property Bar() As String 
    Get 
     Return _Bar 
    End Get 
    Set(ByVal value As String) 
     _Bar = value 
    End Set 
End Property 

Ama bu izin verilmez:

<System.NonSerialized()> _ 
Public Property Bar() As String 
    Get 
     Return _Bar 
    End Get 
    Set(ByVal value As String) 
     _Bar = value 
    End Set 
End Property 

cevap

15

NonSerialized XML den serileştirme fazla türleri için de geçerlidir. İkili veya SOAP için serileştirme yapıyorsanız ve bir XmlSerializer kullanarak XML'e serileştiriyorsanız XmlIgnore'u kullanıyorsanız, NonSerialized'i kullanırsınız. MSDN'de NonSerializedAttribute sınıfının sözler bölümüne bakın.