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


Az adatszerződés szerializálója által támogatott típusok

A Windows Communication Foundation (WCF) az alapértelmezett szerializálási motort használja az DataContractSerializer adatok XML-fájllá alakításához és az XML adatokká alakításához. Az DataContractSerializer adatszerződések típusainak szerializálására szolgál. Azonban számos más típust támogat, amelyek implicit adatszerződésnek tekinthetők. A szerializálható típusok teljes listája a következő:

Bizonyos típusok részleges megbízhatósági módban való használatának korlátozásai

Az alábbiakban felsoroljuk azokat a korlátozásokat, amelyek bizonyos típusokat részleges megbízhatósági módban használnak:

  • Olyan típus szerializálásához vagy deszerializálásához, amely részben megbízható kódban implementál ISerializable a DataContractSerializer szükséges SerializationFormatter és UnmanagedCode engedélyekkel.

  • A WCF-kód részleges megbízhatósági módban történő futtatásakor a mezők szerializálása és deszerializálása readonly (mindkettő public és private) nem támogatott. Ennek az az oka, hogy a létrehozott IL ellenőrizhetetlen, ezért emelt szintű engedélyeket igényel.

  • Mind a DataContractSerializerXmlSerializer kettő támogatott részleges megbízhatósági környezetben. A használatukra DataContractSerializer azonban a következő feltételek vonatkoznak:

    • Minden szerializálható [DataContract] típusnak nyilvánosnak kell lennie.

    • Egy típus összes szerializálható [DataMember] mezőjének vagy tulajdonságának [DataContract] nyilvánosnak és olvashatónak/írhatónak kell lennie. A mezők szerializálása és deszerializálása readonly nem támogatott a WCF részben megbízható alkalmazásokban való futtatásakor.

    • A [Serializable]/ISerializable] programozási modell részleges megbízhatósági környezetben nem támogatott.

    • Az ismert típusokat kód- vagy gépszintű konfigurációban (Machine.config) kell megadni. Az ismert típusok biztonsági okokból nem adhatók meg az alkalmazásszintű konfigurációban.

  • A implementáló IObjectReference típusok kivételt képeznek egy részben megbízható környezetben, mert a GetRealObject metódushoz biztonsági engedély [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]szükséges.

További megjegyzések a szerializálásról

Az adatszerződés szerializálója által támogatott típusokra a következő szabályok vonatkoznak:

  • Az adatszerződés szerializálója teljes mértékben támogatja az általános típusokat.

  • Az adatszerződés szerializálója teljes mértékben támogatja a null értékű értéktípusokat.

  • A rendszer a felülettípusokat gyűjteménytípusként Object vagy gyűjteménytípusként kezeli a gyűjtőfelületek esetében.

  • Mind a struktúrák, mind az osztályok támogatottak.

  • Ez DataContractSerializer nem támogatja a webszolgáltatások és ASP.NET XmlSerializer által használt programozási modellt. Különösen nem támogatja az olyan attribútumokat, mint XmlElementAttribute és XmlAttributeAttribute. A programozási modell támogatásának engedélyezéséhez a WCF-et ahelyett, hogy a XmlSerializerDataContractSerializer.

  • A DBNull típus kezelése speciális módon történik. Ez egy egytonos típus, és a deszerializáláskor a deszerializáló tiszteletben tartja az egytonos kényszert, és az összes DBNull hivatkozásra az egytonos példányra mutat. Mivel DBNull szerializálható típus, engedélyre van szükség SerializationFormatter .

Lásd még