Aracılığıyla paylaş


System.Runtime.Serialization.DataContractAttribute sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

özniteliğini DataContractAttribute , tarafından DataContractSerializerserileştirme ve seri durumdan çıkarma işlemlerinde kullanılan türlere (sınıflar, yapılar veya numaralandırmalar) uygulayın. Windows Communication Foundation (WCF) altyapısını kullanarak ileti gönderiyor veya alıyorsanız, iletilerde gönderilen verileri tutan ve işleyen tüm sınıflara da uygulamasınız DataContractAttribute gerekir. Veri sözleşmeleri hakkında daha fazla bilgi için bkz . Veri Sözleşmelerini Kullanma.

ayrıca, serileştirmek istediğiniz değerleri barındıran herhangi bir alana, özelliğe veya olaya da uygulamanız DataMemberAttribute gerekir. uygulamasını uygulayarak DataContractAttribute, verileri seri hale getirmek ve seri durumdan çıkarmak için öğesini açıkça etkinleştirirsiniz DataContractSerializer .

Dikkat

öğesini özel alanlara uygulayabilirsiniz DataMemberAttribute . Alan tarafından döndürülen verilerin (özel olsa bile) seri hale getirildiğini ve seri durumdan çıkarıldığını ve bu nedenle kötü amaçlı bir kullanıcı veya işlem tarafından görüntülenebileceğini veya araya girilebileceğini unutmayın.

Veri sözleşmeleri hakkında daha fazla bilgi için Veri Sözleşmelerini Kullanma başlığı altında listelenen konulara bakın.

Veri sözleşmeleri

Veri sözleşmesi, her alan için bir ad ve veri türüne sahip bir alan kümesinin soyut açıklamasıdır. Veri sözleşmesi, farklı platformlardaki hizmetlerin birlikte çalışabilmesi için tek bir uygulamanın dışında yer alır. Hizmetler arasında geçirilen veriler aynı sözleşmeye uygun olduğu sürece tüm hizmetler verileri işleyebilir. Bu işleme, gevşek bir şekilde bağlanmış bir sistem olarak da bilinir. Veri sözleşmesi, bir uygulama tarafından işlenebilmesi için verilerin nasıl teslim edilmesi gerektiğini belirten bir arabirime de benzer. Örneğin, veri sözleşmesi "Ad" ve "Soyadı" adlı iki metin alanı olan "Kişi" adlı bir veri türünü çağırabilir. Veri sözleşmesi oluşturmak için sınıfına uygulayın DataContractAttribute ve DataMemberAttribute seri hale getirmesi gereken tüm alanlara veya özelliklere uygulayın. Veriler seri hale getirildiğinde, türüne örtük olarak yerleşik olarak yerleştirilen veri sözleşmesine uygundur.

Not

Veri sözleşmesi, devralma davranışındaki gerçek bir arabirimden önemli ölçüde farklıdır. Arabirimler türetilmiş türler tarafından devralınır. bir temel sınıfa uyguladığınızda DataContractAttribute , türetilen türler özniteliğini veya davranışını devralmaz. Ancak türetilmiş bir türün veri sözleşmesi varsa, temel sınıfın veri üyeleri seri hale getirilir. Ancak, bunları serileştirilebilir hale getirmek için türetilmiş bir sınıftaki yeni üyelere uygulamanız DataMemberAttribute gerekir.

XML şema belgeleri ve SvcUtil aracı

Diğer hizmetlerle veri alışverişinde bulunuyorsanız, veri sözleşmesini açıklamanız gerekir. geçerli sürümü DataContractSerializeriçin, veri sözleşmelerini tanımlamak için bir XML şeması kullanılabilir. (Diğer meta veri/açıklama biçimleri aynı amaçla kullanılabilir.) Uygulamanızdan XML şeması oluşturmak için ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe) /dconly komut satırı seçeneğiyle kullanın. Araca giriş bir derleme olduğunda, araç varsayılan olarak bu derlemede bulunan tüm veri sözleşmesi türlerini tanımlayan bir XML şemaları kümesi oluşturur. Buna karşılık, veri sözleşmeleri tarafından ifade edilebilen yapıları kullanan XML şemalarının gereksinimlerine uygun Visual Basic veya C# sınıf tanımları oluşturmak için Svcutil.exe aracını da kullanabilirsiniz. Bu durumda, /dconly komut satırı seçeneği gerekli değildir.

Svcutil.exe aracının girişi bir XML şemasıysa, araç varsayılan olarak bir sınıf kümesi oluşturur. Bu sınıfları incelerseniz, öğesinin uygulandığını DataContractAttribute fark edebilirsiniz. Bu sınıfları, diğer hizmetlerle alışveriş yapılması gereken verileri işlemek üzere yeni bir uygulama oluşturmak için kullanabilirsiniz.

Windows Communication Foundation (WCF) istemcisi oluşturmak üzere kodu ve yapılandırmayı otomatik olarak oluşturmak için aracı Web Hizmetleri Açıklama Dili (WSDL) belgesi döndüren bir uç noktada da çalıştırabilirsiniz. Oluşturulan kod ile DataContractAttributeişaretlenmiş türleri içerir.

Mevcut türleri yeniden kullanma

Veri sözleşmesinin iki temel gereksinimi vardır: kararlı bir ad ve üye listesi. Kararlı ad alanı tekdüzen kaynak tanımlayıcısı (URI) ve sözleşmenin yerel adından oluşur. Varsayılan olarak, bir sınıfa uyguladığınızda DataContractAttribute , yerel ad olarak sınıf adını ve ad alanı URI'si olarak sınıfın ad alanını (ön ekli "http://schemas.datacontract.org/2004/07/") kullanır. ve Namespace özelliklerini ayarlayarak Name varsayılanları geçersiz kılabilirsiniz. ad alanına uygulayarak ContractNamespaceAttribute da ad alanını değiştirebilirsiniz. Verileri tam olarak istediğiniz gibi işleyen ancak veri sözleşmesinden farklı bir ad alanı ve sınıf adına sahip olan mevcut bir türünüz varsa bu özelliği kullanın. Varsayılan değerleri geçersiz kılarak mevcut türünüzü yeniden kullanabilir ve serileştirilmiş verilerin veri sözleşmesine uygun olmasını sağlayabilirsiniz.

Not

Herhangi bir kodda uzun yerine sözcüğünü DataContractDataContractAttributekullanabilirsiniz.

Sürüm oluşturma

Veri sözleşmesi, kendisinin sonraki sürümlerini de barındırabilir. Başka bir ifadeyle, sözleşmenin daha sonraki bir sürümünde ek veriler bulunduğunda bu veriler depolanır ve bir gönderene dokunulmadan döndürülür. Bunu yapmak için arabirimini IExtensibleDataObject uygulayın.

Sürüm oluşturma hakkında daha fazla bilgi için bkz . Veri Sözleşmesi Sürüm Oluşturma.