Aracılığıyla paylaş


Seri Hale Getirilebilir Türler

Varsayılan olarak, DataContractSerializer genel olarak görünen tüm türleri serileştirir. Türdeki tüm genel okuma/yazma özellikleri ve alanları serileştirilir.

Ve özniteliklerini türlerine DataContractAttributeDataMemberAttribute ve üyelerine uygulayarak varsayılan davranışı değiştirebilirsiniz Bu özellik, denetiminiz altında olmayan ve öznitelik eklemek için değiştirilemeyen türleriniz olduğu durumlarda yararlı olabilir. bu DataContractSerializer tür "işaretsiz" türleri tanır.

Serileştirme Varsayılanları

türlerin ve üyelerin DataContractAttribute serileştirmesini açıkça denetlemek veya özelleştirmek için ve DataMemberAttribute özniteliklerini uygulayabilirsiniz. Ayrıca, bu öznitelikleri özel alanlara uygulayabilirsiniz. Ancak, bu özniteliklerle işaretlenmemiş türler bile serileştirilir ve seri durumdan çıkarılır. Aşağıdaki kurallar ve özel durumlar geçerlidir:

  • , DataContractSerializer yeni oluşturulan türlerin varsayılan özelliklerini kullanarak öznitelikleri olmayan türlerden bir veri sözleşmesi çıkartır.

  • Özniteliğini bu üyeye uygulamadığınız IgnoreDataMemberAttribute sürece, ortak ve yöntemlere sahip tüm ortak get alanlar ve set özellikler seri hale getirilir.

  • Serileştirme semantiği, ile benzerdir XmlSerializer.

  • İşaretsiz türlerde, yalnızca parametreleri olmayan oluşturucuları olan ortak türler serileştirilir. Bu kuralın ExtensionDataObject özel durumu arabirimiyle birlikte IExtensibleDataObject kullanılır.

  • Salt okunur alanlar, veya yöntemi olmayan get özellikler ve iç veya özel set ya da get yöntemlere sahip özellikler serileştirilmemiştir.set Bu tür özellikler yoksayılır ve yalnızca get-only koleksiyonları dışında özel durum oluşturmaz.

  • XmlSerializeröznitelikleri (, XmlElementXmlAttribute, , XmlIgnore, XmlIncludevb.) yoksayılır.

  • Özniteliği belirli bir türe DataContractAttribute uygulamazsanız, seri hale getirici özniteliğin uygulandığı türdeki herhangi bir üyeyi DataMemberAttribute yoksayar.

  • KnownTypes özelliği özniteliğiyle DataContractAttribute işaretlenmemiş türlerde desteklenir. Bu, işaretsiz türlerde KnownTypeAttribute özniteliği için destek içerir.

  • Ortak üyeler, özellikler veya alanlar için serileştirme işlemini "geri çevirmek" için özniteliğini bu üyeye uygulayın IgnoreDataMemberAttribute .

Devralma

İşaretsiz türler (özniteliği olmayan DataContractAttribute türler) bu özniteliğe sahip olan türlerden devralabilir; ancak tersine izin verilmez: özniteliği olan türler işaretsiz türlerden devralamaz. Bu kural öncelikli olarak .NET Framework'ün önceki sürümlerinde yazılan kodla geriye dönük uyumluluğu sağlamak için uygulanır.

Ayrıca bkz.