System.Runtime.Serialization.DataContractAttribute – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

DataContractAttribute Použijte atribut na typy (třídy, struktury nebo výčty), které se používají v serializaci a deserializačních operacích .DataContractSerializer Pokud odesíláte nebo přijímáte zprávy pomocí infrastruktury WCF (Windows Communication Foundation), měli byste také použít DataContractAttribute všechny třídy, které uchovávají data a manipulují s daty odesílaných ve zprávách. Další informace o kontraktech dat naleznete v tématu Použití kontraktů dat.

Musíte také použít u libovolného DataMemberAttribute pole, vlastnosti nebo události, která obsahuje hodnoty, které chcete serializovat. Použitím této možnosti DataContractAttributeexplicitně povolíte DataContractSerializer serializaci a deserializaci dat.

Upozornění

U privátních DataMemberAttribute polí můžete použít pole. Mějte na paměti, že data vrácená polem (i když jsou soukromá) serializována a deserializována, a proto mohou být zobrazena nebo zachycena škodlivým uživatelem nebo procesem.

Další informace o kontraktech dat najdete v tématech uvedených v tématu Používání kontraktů dat.

Datové smlouvy

Kontrakt dat je abstraktní popis sady polí s názvem a datovým typem pro každé pole. Smlouva o datech existuje mimo jakoukoli jednotlivou implementaci, která umožňuje službám na různých platformách spolupracovat. Pokud data předávaná mezi službami odpovídají stejnému kontraktu, můžou data zpracovávat všechny služby. Toto zpracování se také označuje jako volně propojený systém. Kontrakt dat je také podobný rozhraní v tom, že kontrakt určuje, jak musí být data doručena, aby je bylo možné zpracovat aplikací. Například kontrakt dat může volat datový typ s názvem "Osoba", který má dvě textová pole s názvem "Jméno" a "Příjmení". Chcete-li vytvořit datový kontrakt, použijte DataContractAttribute třídu a použijte u DataMemberAttribute všech polí nebo vlastností, které musí být serializovány. Při serializaci jsou data v souladu s kontraktem dat, který je implicitně integrovaný do typu.

Poznámka:

Kontrakt dat se ve svém chování dědičnosti výrazně liší od skutečného rozhraní. Rozhraní jsou zděděna všemi odvozenými typy. Pokud použijete u DataContractAttribute základní třídy odvozené typy nedědí atribut ani chování. Nicméně, pokud odvozený typ má datový kontrakt, datové členy základní třídy jsou serializovány. Je však nutné použít DataMemberAttribute nové členy v odvozené třídě, aby je serializovat.

Dokumenty schématu XML a nástroj SvcUtil

Pokud vyměňujete data s jinými službami, je nutné popsat smlouvu o datech. Pro aktuální verzi schématu DataContractSerializerXML lze použít k definování kontraktů dat. (Pro stejný účel lze použít jiné formy metadat a popisu.) K vytvoření schématu XML z aplikace použijte nástroj ServiceModel Metadata Utility (Svcutil.exe) s možností příkazového řádku /dconly . Když je vstupem do nástroje sestavení, nástroj ve výchozím nastavení vygeneruje sadu schémat XML, která definují všechny typy datových kontraktů nalezené v daném sestavení. Naopak můžete použít nástroj Svcutil.exe k vytvoření definic tříd jazyka Visual Basic nebo C#, které odpovídají požadavkům schémat XML, které používají konstrukty, které mohou být vyjádřeny datovými kontrakty. V tomto případě není vyžadována možnost příkazového řádku /dconly .

Pokud vstup do nástroje Svcutil.exe je ve výchozím nastavení schématem XML, nástroj vytvoří sadu tříd. Pokud tyto třídy prozkoumáte, zjistíte, že DataContractAttribute byla použita. Tyto třídy můžete použít k vytvoření nové aplikace pro zpracování dat, která se musí vyměňovat s jinými službami.

Můžete také spustit nástroj na koncový bod, který vrací dokument WSDL (Web Services Description Language), který automaticky vygeneruje kód a konfiguraci pro vytvoření klienta WCF (Windows Communication Foundation). Vygenerovaný kód obsahuje typy, které jsou označeny znakem DataContractAttribute.

Opakované použití existujících typů

Kontrakt dat má dva základní požadavky: stabilní název a seznam členů. Stabilní název se skládá z identifikátoru URI (Uniform Resource Identifier) oboru názvů a místního názvu kontraktu. Ve výchozím nastavení použijete-li u DataContractAttribute třídy název třídy, použije název třídy jako místní název a obor názvů třídy (s předponou "http://schemas.datacontract.org/2004/07/") jako identifikátor URI oboru názvů. Výchozí nastavení můžete přepsat nastavením Name a Namespace vlastností. Obor názvů můžete také změnit použitím ContractNamespaceAttribute oboru názvů. Tuto funkci použijte, pokud máte existující typ, který zpracovává data přesně tak, jak potřebujete, ale má jiný obor názvů a název třídy z kontraktu dat. Přepsáním výchozích hodnot můžete znovu použít existující typ a mít serializovaná data v souladu se smlouvou o datech.

Poznámka:

V libovolném kódu můžete místo delšího DataContractAttributeslova DataContract použít slovo .

Vytváření verzí

Kontrakt dat může také pojmout novější verze samotného. To znamená, že když novější verze kontraktu obsahuje další data, uloží se a vrátí se odesílateli, který není nedotčen. Provedete to implementací IExtensibleDataObject rozhraní.

Další informace o správěverzích