Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet495/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   491   492   493   494   495   496   497   498   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ПриМеЧание
Начиная.с.версии.3 5,.в. NET.Framework.класс.SoapFormatter.считается.устаревшим.
и.не.рекомендуется.к.использованию .Однако.его.имеет.смысл.применять.при.отладке.
кода.сериализации,.так.как.он.создает.доступный.для.чтения.текст.в.формате.XML .
Если.в.выходном.коде.вы.хотите.воспользоваться.механизмами.XML-сериализации.
и.XML-десериализации,.обратитесь.к.классам.XmlSerializer.и.DataContractSerializer 
Для сериализации графа объектов достаточно вызвать метод 
Serialize
модуля 
форматирования и передать ему, во-первых, ссылку на объект потока ввода-вы-
вода, во-вторых, ссылку на сериализуемый граф. Поток ввода-вывода указывает, 
куда следует поместить сериализуемые байты. Его роль может играть объект 
любого типа, производного от абстрактного базового класса 
System.IO.Stream

Это означает, что граф может быть сериализован в тип 
MemoryStream

FileStream

NetworkStream
и т. п.


669
Практический.пример.сериализации/десериализации
Во втором параметре метода 
Serialize
является ссылка на объект любого типа: 
Int32

String

DateTime

Exception

List

Dictionary
DateTime>
и т. п. Объект, на который ссылается параметр 
objectGraph
, может, в свою очередь, 
содержать ссылки на другие объекты. К примеру, параметр 
objectGraph
быть ссыл-
кой на коллекцию объектов, которые, в свою очередь, могут ссылаться на другие 
объекты. Метод 
Serialize
сериализует в поток все объекты графа.
Модуль форматирования «знает», как сериализовать весь граф, ссылаясь на 
описывающие тип каждого объекта метаданные. Для отслеживания состояния 
экземплярных полей в типе каждого объекта в процессе сериализации метод 
Serialize
использует отражение. Если какие-то из полей ссылаются на другие 
объекты, метод сериализует и их.
Модули форматирования используют хорошо проработанные алгоритмы. На-
пример, они знают, что каждый объект в графе должен сериализоваться всего один 
раз. Благодаря этому при перекрестной ссылке двух объектов модуль форматиро-
вания не входит в бесконечный цикл.
В моем методе 
SerializeToMemory
при возвращении управления методом 
Serialize
объект 
MemoryStream
просто возвращается вызывающему коду. При-
ложение использует содержимое этого неструктурированного массива байтов тем 
способом, который считает необходимым. Например, оно может сохранить массив 
в файле, скопировать в буфер обмена, переслать по сети и т. п.
Метод 
DeserializeFromStream
превращает поток ввода-вывода обратно в граф 
объекта. Эта операция еще проще сериализации. В моем коде был сконструирован 
объект 
BinaryFormatter
, после чего оставалось вызвать его метод 
Deserialize

Этот метод берет в качестве параметра поток ввода-вывода и возвращает ссылку 
на корневой объект десериализованного графа.
При этом внутри метод 
Deserialize
исследует содержимое потока, создает 
экземпляры всех обнаруженных в потоке объектов и инициализирует все их, при-
сваивая им значения, которые граф объекта имел до сериализации. Обычно затем 
следует приведение ссылки на возвращенный методом 
Deserialize
объект к типу, 
который ожидает увидеть приложение.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   491   492   493   494   495   496   497   498   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish