Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
DataContractSerializer sınıfını, bir türün örneklerini bir XML akışına veya belgeye serileştirmek ve seriden çıkarmak için kullanın. Örneğin, ad ve adres gibi temel verileri içeren özelliklere sahip adlı Person bir tür oluşturabilirsiniz. Daha sonra sınıfın Person bir örneğini oluşturup işleyebilir ve tüm özellik değerlerini daha sonra almak üzere bir XML belgesine veya anında aktarım için bir XML akışına yazabilirsiniz. En önemlisi, DataContractSerializer Windows Communication Foundation (WCF) iletilerinde gönderilen verileri seri hale getirmek ve seri durumdan çıkarmak için kullanılır. Sınıflara DataContractAttribute özniteliğini ve sınıf üyelerine DataMemberAttribute özniteliğini uygulayarak, serileştirilen özellikleri ve alanları belirtin.
Serileştirilebilen türlerin listesi için bkz. Veri Sözleşmesi Seri Hale Getiricisi Tarafından Desteklenen Türler.
Yazma veya okuma formatını kullanmak için öncelikle bir sınıfın örneğini ve biçime uygun bir nesne oluşturun; örneğin DataContractSerializer sınıfının bir örneği. Ardından verileri kalıcı hale getirmek için yöntemini çağırın WriteObject . Verileri almak için, veri biçimini (xml belgesi için gibi XmlDictionaryReader ) okumak için uygun bir nesne oluşturun ve yöntemini çağırın ReadObject .
DataContractSerializer kullanımı hakkında daha fazla bilgi için bkz. Serileştirme ve Seri Durumdan Çıkarma.
İstemci uygulaması yapılandırma dosyasında dataContractSerializer öğesini kullanarak< bir veri sözleşmesi seri hale getiricisinin> türünü ayarlayabilirsiniz.
Sınıfları serileştirme ve deserileştirme için hazırlayın
DataContractSerializer sınıfı, DataContractAttribute ve DataMemberAttribute sınıfları ile birlikte kullanılır. Bir sınıfı serileştirme için hazırlamak amacıyla, sınıfa DataContractAttribute uygulayın. Serileştirmek istediğiniz verileri döndüren sınıfın her üyesi için uygulamasını DataMemberAttributeuygulayın. Erişilebilirlik ne olursa olsun alanları ve özellikleri seri hale getirebilirsiniz: özel, korumalı, iç, korumalı iç veya genel.
Örneğin, şemanızda bir Customer özelliği olan ID belirtilmiştir, ancak zaten bir Person özelliğine sahip Name adlı türü kullanan mevcut bir uygulamanız vardır. Sözleşmeye uygun bir tür oluşturmak için önce sınıfına DataContractAttribute uygulayın. Ardından, DataMemberAttribute serileştirmek istediğiniz her alana veya özelliğe uygulayın.
Uyarı
DataMemberAttribute hem özel hem de kamusal üyelere uygulayabilirsiniz.
XML'nin son biçimi metin olmamalıdır. Bunun yerine, DataContractSerializer, verileri, XmlReader ve XmlWriter tarafından tanınan herhangi bir biçime yazmanızı sağlayan XML bilgi kümesi olarak kaydeder. XmlDictionaryReader ve XmlDictionaryWriter sınıflarını okuma ve yazma işlemlerinizde kullanmanız önerilir, çünkü her ikisi de DataContractSerializer ile çalışacak şekilde optimize edilmiştir.
Serileştirme veya seri durumdan çıkarma gerçekleşmeden önce doldurulması gereken alanları veya özellikleri olan bir sınıf oluşturuyorsanız, serileştirme Geri ÇağırmalarıVersion-Tolerant açıklandığı gibi geri çağırma özniteliklerini kullanın.
Bilinen türler koleksiyonuna ekleme
Bir nesneyi seri hale getirdiğinizde veya seri durumdan çıkarırken, türünün DataContractSerializer tarafından "bilinen" olması gerekir. Uygulayan IEnumerable<T> bir sınıfın örneğini oluşturarak (örneğin List<T>) ve bilinen türleri koleksiyona ekleyerek başlayın. Ardından, DataContractSerializer kabul eden aşırı yüklemelerden birini kullanarak IEnumerable<T> örneğini oluşturun (örneğin, DataContractSerializer(Type, IEnumerable<Type>)).
Uyarı
Diğer ilkel türlerden farklı olarak, DateTimeOffset yapı varsayılan olarak bilinen bir tür değildir, bu nedenle bilinen türler listesine el ile eklenmelidir (bkz. Veri Sözleşmesi Bilinen Türleri).
Geleceğe Dönük Uyumluluk
, DataContractSerializer sözleşmenin gelecekteki sürümleriyle uyumlu olacak şekilde tasarlanmış veri sözleşmelerini anlar. Bu tür türler arabirimi uygular IExtensibleDataObject . Arabirim, bir ExtensionData özelliğine sahiptir ve bu özellik bir ExtensionDataObject nesne döndürür. Daha fazla bilgi için bkz. Forward-Compatible Veri Sözleşmeleri.
Kısmi güven altında çalıştır
Seri durumdan çıkarma sırasında hedef nesnenin örneği oluşturulurken, DataContractSerializer hedef nesnenin kurucusunu çağırmaz. Kısıtlı güvenden erişilebilen bir [DataContract] türü oluşturursanız (yani, geneldir ve AllowPartiallyTrustedCallers özniteliği uygulanmış bir derlemede bulunur) ve güvenlikle ilgili bazı eylemler gerçekleştirirse, yapıcının çağrılmadığını bilmeniz gerekir. Özellikle aşağıdaki teknikler çalışmaz:
- Oluşturucuyu iç veya özel hale getirerek ya da oluşturucuya bir
LinkDemandekleyerek kısmi güven erişimini kısıtlamaya çalışırsanız, bunların hiçbiri kısmi güven altında seri durumdan çıkarma sırasında herhangi bir etkiye sahip değildir. - Oluşturucunun çalıştırıldığını varsayan bir sınıfı kodlarsanız, sınıf sömürülebilecek geçersiz bir iç duruma düşebilir.