Megosztás a következőn keresztül:


Szerializálható típusok

Alapértelmezés szerint a szerializálja az DataContractSerializer összes nyilvánosan látható típust. Az összes nyilvános olvasási/írási tulajdonság és mező szerializálva van.

Az alapértelmezett viselkedés módosításához alkalmazza az DataContractAttribute és az attribútumokat a típusokra és DataMemberAttribute tagokra Ez a funkció hasznos lehet olyan helyzetekben, amikor olyan típusok vannak, amelyek nem tartoznak az Ön felügyelete alá, és nem módosíthatók attribútumok hozzáadásához. Az DataContractSerializer ilyen "jelöletlen" típusokat felismeri.

Szerializálási alapértelmezések

A típusok és tagok szerializálásának explicit szabályozására és DataMemberAttribute testreszabására alkalmazhatja az DataContractAttribute és az attribútumokat. Emellett ezeket az attribútumokat magánmezőkre is alkalmazhatja. Az ilyen attribútumokkal nem jelölt típusok azonban szerializálva és deszerializálva vannak. A következő szabályok és kivételek érvényesek:

  • A DataContractSerializer rendszer az újonnan létrehozott típusok alapértelmezett tulajdonságait használó, attribútumok nélküli típusokból származó adatszerződésre következtet.

  • Az összes nyilvános mező, valamint a nyilvános get és set metódusokkal rendelkező tulajdonságok szerializálva vannak, kivéve, ha az attribútumot az IgnoreDataMemberAttribute adott tagra alkalmazza.

  • A szerializáció szemantikája hasonló XmlSerializera .

  • Jelöletlen típusok esetén csak a paraméterekkel nem rendelkező konstruktorokkal rendelkező nyilvános típusok vannak szerializálva. A szabály alóli kivételt a ExtensionDataObject rendszer a IExtensibleDataObject felülettel együtt használja.

  • Az írásvédett mezők, a metódus nélküli getset tulajdonságok és a belső vagy privát set vagy get metódusokkal rendelkező tulajdonságok nem szerializálva vannak. Az ilyen tulajdonságok figyelmen kívül lesznek hagyva, és a rendszer nem ad kivételt, kivéve a csak lekéréses gyűjtemények esetében.

  • XmlSerializer az attribútumok (például XmlElement, XmlAttribute, XmlIgnore, XmlIncludestb.) figyelmen kívül lesznek hagyva.

  • Ha nem alkalmazza az DataContractAttribute attribútumot egy adott típusra, a szerializáló figyelmen kívül hagyja az adott típus bármely tagját, amelyre az DataMemberAttribute attribútumot alkalmazza.

  • A KnownTypes tulajdonság olyan típusok esetén támogatott, amelyek nincsenek megjelölve az DataContractAttribute attribútummal. Ez magában foglalja a KnownTypeAttribute jelöletlen típusok attribútumának támogatását.

  • A nyilvános tagok, tulajdonságok vagy mezők szerializálási folyamatának "letiltásához" alkalmazza az attribútumot az IgnoreDataMemberAttribute adott tagra.

Öröklődés

A jelöletlen típusok (az DataContractAttribute attribútum nélküli típusok) örökölhetnek olyan típusoktól, amelyek rendelkeznek ezzel az attribútummal, azonban a fordított érték nem engedélyezett: az attribútummal rendelkező típusok nem örökölhetnek jelöletlen típusoktól. Ez a szabály elsősorban a .NET-keretrendszer korábbi verzióiban írt kóddal való kompatibilitás biztosítása érdekében van kényszerítve.

Lásd még