Saya menggunakan .NET 3.5SP1 dan DataContractSerializer untuk membuat serial kelas. Di SP1, mereka mengubah perilakunya sehingga Anda tidak perlu menyertakan atribut DataContract / DataMember di kelas dan itu hanya akan membuat serial semuanya. Ini adalah perilaku yang saya gunakan, tetapi sekarang saya harus mengabaikan satu properti dari serializer. Saya tahu bahwa salah satu cara untuk melakukan ini adalah dengan menambahkan atribut DataContract ke kelas, dan cukup letakkan atribut DataMember pada semua anggota yang ingin saya sertakan. Saya punya alasan, meskipun, ini tidak akan berhasil untuk saya.
Jadi pertanyaan saya adalah, apakah ada atribut atau sesuatu yang dapat saya gunakan untuk membuat DataContractSerializer mengabaikan properti?
sumber
[IgnoreDataMember]
tidak akan berfungsi jika kelas memiliki[Serializable]
atribut. Lihat detail jawaban Doug .Selain itu, DataContractSerializer akan membuat serial item yang ditandai sebagai [Serializable] dan juga akan membuat serialisasi tipe tak bertanda di .NET 3.5 SP1 dan yang lebih baru, untuk memungkinkan dukungan untuk serialisasi tipe anonim.
Jadi, itu tergantung pada bagaimana Anda mendekorasi kelas Anda tentang bagaimana mencegah anggota dari serialisasi:
[DataContract]
, maka hapus[DataMember]
untuk properti.[Serializable]
, tambahkan[NonSerialized]
di depan bidang untuk properti.[IgnoreDataMember]
ke properti.sumber
Dalam XML Serializing, Anda dapat menggunakan atribut [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute) untuk mengabaikan properti saat membuat serial kelas.
Ini mungkin berguna bagi Anda (Atau mungkin berguna bagi siapa saja yang menemukan pertanyaan ini ketika mencoba untuk mencari tahu bagaimana mengabaikan properti saat Serializing dalam XML, seperti saya).
sumber
Coba tandai bidang tersebut dengan atribut [NonSerialized ()]. Ini akan memberi tahu serializer untuk mengabaikan bidang.
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx
sumber
Apa yang Anda katakan bertentangan dengan apa yang dikatakan di perpustakaan MSDN di lokasi ini:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
Saya tidak melihat fitur SP1 yang Anda sebutkan.
sumber