Interfész iserializable (formamidból)
Minden osztálynak lehet sorba kell jelölni attribútum SerializableAttribute. Ha az osztályban kezelni a folyamatot a sorszámozás, akkor végre ISerializable felületet. A formázó felhívja GetObjectData alatt szerializációnak és feltölti az előírt SerializationInfo minden szükséges adatokat, amely egy objektum. A formázó létre SerializationInfo azzal a céllal írja be a mezőbe. Tárgyak, hogy szeretne küldeni egy proxy maguknak használhatja FullTypeName és AssemblyName SerializationInfo módszerek változása továbbított adatok.
Abban az esetben, osztály öröklési az a képesség, hogy szerializálni egy osztály származó bázis osztályt, amely megvalósítja ISerializable. Ebben az esetben a származtatott osztály fel kell hívni a szülő osztály végrehajtása GetObjectData belül annak végrehajtását GetObjectData. Ellenkező esetben az adatok az alap osztály nem szerializált.
ISerializable felület tartalmaz egy konstruktor segítségével a kivitelező aláírása (SerializationInfo információk összefüggésben StreamingContext). Alatt deserialization, a jelenlegi kivitelező neve után az adatokat SerializationInfo deserialized segítségével formázó. Általában ez kivitelező védeni kell, ha az osztály nem zárt.
A sorrendet, amelyben objektumok deserialized nem lehet garantálni. Például, ha az egyik típusú kifejezés egy olyan típusú, amely nem volt deserialized, kivétel történik. Létrehozásakor típusok, amelyek ezeket a függőségeket, meg tudod oldani a problémát úgy, a felület és IDeserializationCallback OnDeserialization módszer.
sorszámozás architektúra kezeli a típusú objektumok, amelyek kiterjesztik MarshalByRefObject megegyezik a típusú nyúlnak Object. Az ilyen típusú jelölhetők SerializableAttribute és végrehajtása ISerializable felület, mint bármely más típusú objektumot. Az állam a tárgy felvéve és a patak.
Ha ezeket a típusokat használják System.Runtime.Remoting. Távoli elérés infrastruktúra egy helyettesítő, amely eltávolítja a tipikus sorszámozás, és ehelyett szerializálni proxy MarshalByRefObject. Helyettesítő - egy asszisztens, aki ismeri a módját, hogy sorosításához és deserialize tárgyak bizonyos típusú. Proxy szerver láthatatlan a felhasználó a legtöbb esetben lesz típus ObjRef.
Ennek része a teljes tervezési minta nem elfogadott tag osztály szerializált attribútum és kiterjesztése MarshalByRefObject. Fejlesztők kell alaposan gondolja át a lehetséges forgatókönyvek sorozatprogramozásának Távoli elérés, amikor kombináljuk a két tulajdonság. Ez egy példa, ahol lehet használni MemoryStream. Bár a kiindulási osztályban MemoryStream (Stream) nyúlik ki MarshalByRefObject. lehetőség van arra, hogy rögzítse MemoryStream állami és helyreállítani a fog. Így előfordulhat, hogy az állam szerializálni ennek az áramnak az adatbázis és helyreállítani azt egy későbbi időpontban. Azonban, amikor a via Távoli elérés, adott típusú objektum lenne a proxy.
További információt a sorszámozás osztályok, amelyek kiterjesztik MarshalByRefObject. A RemotingSurrogateSelector listájában. További információ a végrehajtási ISerializable. Az Egyéni serialization.
Megjegyzések a végrehajtás:
Végrehajtja ezt a felületet, hogy a projekt, hogy részt vegyen a sorozatprogramozásának deserialization.