Net, konfigurálása objektum szerializációs

Ahhoz, hogy egy tárgy áll a .NET serialization szolgáltatásokat kell csak díszíteni minden kapcsolódó osztály (vagy szerkezet) az attribútum [Serializable]. Ha azt állapítjuk meg, hogy egy bizonyos típusú olyan adatok a tagok, hogy nem (vagy nem) részt vesz a szerializációnak áramkörben jelölhetjük, mint a mező attribútum [NonSerialized]. Ez segít csökkenteni a méretét a tárolt adatokat, feltéve, hogy a szerializált osztályban van tagváltozóival hogy ne „emlékszik” (például egy fix érték, egy véletlen értéket, a rövid távú adatok, stb.)







Először hozzon létre egy új konzol alkalmazást. Egy új osztály nevű rádió, meg van jelölve a [Serializable], ami kizárta egy tag változó (radioID), megjelölve az attribútum [NonSerialized], és ezért nem kerülnek a megadott adatfolyam:

Ezután adjunk hozzá két további képviselő bázis osztályok és JamesBondCar Car (mindkettő is megjelölt attribútum [Serializable]), és meghatározzák a következő adatmező bennük:

Tartsuk szem előtt, hogy a [Serializable] attribútum nem örökölt a szülő osztályban. Ezért, amikor a típust öröklési jelzett [Serializable], származtatott osztály is meg kell címkézni [Serializable], vagy nem lehet menteni a falon. Gyakorlatilag az összes tárgyat a tárgy grafikon kell jelölni a tulajdonság [Serializable]. Kísérlet sorosításához serializable objektumot BinaryFormatter vagy SoapFormatter SerializationException kivételt okoz futásidejű.







Vegyük észre, hogy minden ilyen típusú adatot mezők meghatározása a köz-, ez azért van, hogy egyszerűsítse a példát. Természetesen saját benyújtott adatok nyilvános tulajdonságokat lenne előnyösebb szemszögéből OOP. Ugyancsak az egyszerűség kedvéért az ilyen típusú bizonytalan nincs külön konstruktőrök, és mivel minden kezdeti adat mező lesz bedőlése.

Félretéve a OOP elvek, akkor kérheti bármilyen típusú adat definíció területeken igényelnek a különböző formázó és sorosításához őket a falon? A válasz az, hogy a körülményektől függően. Ha menteni az állam a tárgy segítségével BinaryFormatter vagy SoapFormatter. akkor nincs különbség. Az ilyen típusú programozható sorszámozás minden sorozatban mező típusát, függetlenül attól, hogy azok bemutatásra nyilvános területeken, magán- vagy privát mezők megfelelő mezőkbe nyilvános tulajdonságait.

Azonban ne feledjük, hogy ha van adat, hogy a terméket nem szabad tárolni az objektum gráf szelektíven megjelölni egy állami vagy magán attribútum mező [NonSerialized], ahogy az a húr mezők Rádió típusa.

A helyzet azonban változik jelentősen, ha használja a XmlSerializer osztályban. Ez a típus sorosításához sorozatban csak az állami vagy magán adatmezõje terén képviselt állami tulajdonságait. Egyéni adat nem tulajdonságokkal egyszerűen figyelmen kívül hagyja. Vegyük például az ilyen típusú sorozatban személy:

Feldolgozásakor BinaryFormatter vagy SoapFormatter találtuk, hogy a területen isAlive, személyiség fname és tárolni a kiválasztott adatfolyam. Azonban XmlSerializer nem fogja megmenteni az értékeket személyiség, mert ez a része a személyes adatok nem zárt az ingatlan. Annak érdekében, hogy a kor a használó személy XmlSerializer, ezen a területen meg kell határozni, hogy állami vagy párosítani az állami tulajdon.




Kapcsolódó cikkek