WCF'yi öğrenmeye çalışmanın bir parçası olarak, seri hale getirmeyi okuyorum. .NET 3.5'de seriyi nasıl denetleyebileceğimi anlamaya çalışıyorum. Mesela, birkaç kamu mülküyle basit bir sınıfa sahibim. DataContract özniteliğini bu sınıfa ekleyerek, örneğin serileştirildiğinden, ad alanını ve sınıfın adını denetleyebilirim.DataContract ve XmlType
Diğer taraftan, Serializable özniteliğini (muhtemelen gerekli değil) ve bir XmlType özniteliğini ekleyebilirim; bu, aynı zamanda, ad alanını ve sınıfa serileştirmek için kullanılan adı denetlememe de olanak tanır.
Her iki yöntemi de uyguladım ve sınıfı bir ServiceContract'ta bir arabirim çağrısının parçası olarak kullanıyorum. Daha sonra çeşitli nesnelerin nasıl serileştirildiğini görmek için bir Http analizcisi kullanıyorum ve XmlType'ın http içinde hiç xml'yi etkilemediğini fark ettim.
Bütün gün bunu anlamaya çalışıyorum. Neyi kaçırıyorum?
Güncelleme: İki arasındaki farkı ve neden orada olduklarını anlıyorum. Ben sadece neden xmlType ile oluşturulan xml etkileyemiyorum veya (sadece XmlRoot denedim) anlamıyorum.
Temel olarak, ad ve üst düzey eleman ismi hariç IXmlSerializable uygulayarak serileştirme tüm ayrıntılarını kontrol edebilirsiniz. Bunun için XmlType veya XmlRoot özniteliğine ihtiyacınız olacağını varsayıyordum. Hatalı mıydım?
XmlRoot, XmlType ve IXmlSerializable, XML Serializer ile ilgilidir ve veri sözleşmesi serileştirme üzerinde hiçbir etkisi yoktur. –
Bkz. [Datacontractserializer-vs-xmlserializer-pros-and-cons?] (Http://stackoverflow.com/questions/2505778/datacontractserializer-vs-xmlserializer-pros-and-cons-of-each-serializer?) – nawfal