Aracılığıyla paylaş


Veri Sözleşmesi Seri Hale Getirici Tarafından Desteklenen Türler

Windows Communication Foundation (WCF), verileri XML'ye dönüştürmek ve XML'yi yeniden verilere dönüştürmek için varsayılan serileştirme altyapısı olarak öğesini kullanır DataContractSerializer . DataContractSerializer, veri sözleşmesi türlerini serileştirmek için tasarlanmıştır. Ancak, örtük bir veri sözleşmesine sahip olduğu düşünülebilecek diğer birçok türü destekler. Aşağıda, serileştirilebilen türlerin tam listesi yer alıyor:

Kısmi Güven Modunda Belirli Türleri Kullanma Sınırlamaları

Kısmi güven modu senaryolarında belirli türlerin kullanılmasıyla ilgili sınırlamaların listesi aşağıdadır:

  • kullanarak DataContractSerializer kısmen güvenilen kodda uygulanan ISerializable bir türü seri hale getirmek veya seri durumdan SerializationFormatter çıkarmak için ve UnmanagedCode izinleri gerekir.

  • WCF kodu Kısmi Güven modunda çalıştırılırken, alanların seri hale getirilmesi ve seri durumdan readonly çıkarılması (hem hem de privatepublic ) desteklenmez. Bunun nedeni, oluşturulan IL'nin geri alınamaz olması ve bu nedenle yükseltilmiş izinler gerektirmesidir.

  • DataContractSerializer hem ve XmlSerializer hem de kısmi bir güven ortamında desteklenir. Ancak, kullanımı DataContractSerializer aşağıdaki koşullara tabidir:

    • Tüm serileştirilebilir [DataContract] türler genel olmalıdır.

    • Bir [DataContract] türdeki tüm serileştirilebilir [DataMember] alanlar veya özellikler genel ve okuma/yazma olmalıdır. Kısmen güvenilen bir uygulamada WCF çalıştırılırken alanların seri hale getirilmesi ve seri durumdan readonly çıkarılması desteklenmez.

    • Programlama [Serializable]/ISerializable] modeli kısmi güven ortamında desteklenmez.

    • Bilinen türler kod veya makine düzeyi yapılandırmasında (Machine.config belirtilmelidir). Bilinen türler, güvenlik nedeniyle uygulama düzeyi yapılandırmasında belirtilemez.

  • yöntemi güvenlik izni [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]gerektirdiğindenGetRealObject, uygulayan IObjectReference türler kısmen güvenilen bir ortamda özel durum oluşturur.

Serileştirme hakkında Ek Notlar

Aşağıdaki kurallar, Veri Sözleşmesi Seri Hale Getiricisi tarafından desteklenen türler için de geçerlidir:

  • Genel türler, veri sözleşmesi seri hale getiricisi tarafından tam olarak desteklenir.

  • Null atanabilir değer türleri, veri sözleşmesi seri hale getiricisi tarafından tam olarak desteklenir.

  • Arabirim türleri, koleksiyon arabirimleri söz konusu olduğunda koleksiyon türleri olarak veya olarak Object değerlendirilir.

  • Hem yapılar hem de sınıflar desteklenir.

  • ve DataContractSerializer ASP.NET Web hizmetleri tarafından XmlSerializer kullanılan programlama modelini desteklemez. Özellikle ve XmlAttributeAttributegibi XmlElementAttribute öznitelikleri desteklemez. Bu programlama modeli için desteği etkinleştirmek için WCF yerine kullanmak XmlSerializerDataContractSerializerüzere değiştirilmelidir.

  • Türü DBNull özel bir şekilde işlenir. Bu tekil bir türdür ve seri durumdan çıkarılırken seri durumdan çıkarıcı tekil kısıtlamaya dikkat eder ve tüm DBNull başvuruları tekil örneğe işaret eder. DBNull Serileştirilebilir bir tür olduğundan, izin gerektirirSerializationFormatter.

Ayrıca bkz.