Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 226

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 220 221 222 223 224 225 < 226 > 227 228 229 230 231 232 .. 320 >> Следующая

protected '/cid №m;temSave_C!ick (object sender, System.EventArgs e) {
Il Настраиваем свойства диалогового окна для сохранения файлов SaveFileDialog mySaveFileDialog * new SaveFileDialogt); mySaveFileDialog.Initial Directory -
mySaveFileDialog.Filter - "car files (*.car)|*.car|All files(*.*)|* *"¦ \ mySaveFiIeDialog.Fi IterIndex = 1; mySaveFileDialog.RestoreDirectory - true; mySaveFileDialog..FileName - "carOoc";
Il Сохраняем объекты автонобилей ifdiiySaveFileDialog.ShowDialogO - - DialogResult.OK) {
Stream myStram - null;
ifUmyStream - mySaveFileDiaog.OpenFilet)) != null) {
BinaryFormatter myBinaryFormat = new BinaryFormatterO; my Bi na reformat. Sen al 1 ге (my St ream. arTheCars) • myStream. CloseO;
)
}
}
Метод SaveFileDialog.OpenFileC возвращает поток (объект Streara), который представляет файл, выбранный пользователем в диалоговом окне. Как мы уже могли убедиться в этой главе, Bl naryFormatter ничего более и не требует.
Код десериализации (то есть обработчика события Cl і ck диалогового окна Open Car File) выглядит очень похоже. На этот раз мы используем еще одно заранее заготовленное диалоговое окно настраиваем соответствующим образом и получаем объект Stream для выбранного файла. После этого нам осталось воспользоваться методом В1 naryFormatter. Deseri alizeC) и поместить восстановленные объекты в массив:
protected void sender. e)
{
// Настраиваем свойства диалогового окна для открытия файлов OpenFileDialog myOpenFileDialog = new OpenFiIeDialogO; rnyOpenFi leuial og. Initial Di rectory = ".";
myOpenFileDialog.Filter = "car files (*.car)|+.car|All files(*,*)|*.*"; myOpenFileDialog.Filterindex - 1; myOpenFileDialog.RestoreDirectory = true;
И Восстанавливаем объекты автомобилей
іf(rnyOpenFi 1 eDia 1 og.ShowDia 1 ogO - - DialogResult.OK)
{
// Очищаем текущий массив arTneCars.ClearO;
Stream myStram = null:
if((niyStream = !nyOpenFileDiaog.OpenFileO) != null) (
562 Глава 11 . Ввод, вывод и сериализация объектов
Binar/Formatter myBinaryformat - new BinaryFormatteru; arTheCars - (ArrayList)rnyBinaryFornHt.DeserlllzeCmyStreani): myStream.CloseO; UpdateGridO:
)
;i
)
Замечательно! К этому моменту наше приложение уже умеет выполнять операции по сериализации (то есть сохранению объектов массива в файл) и десериализации (восстановлению их из файла в массив). Код для оставшихся пунктов меню очевиден:
protected void irenuitenClear_Cl-ick (object sender, System.EventArgs e)
{
arTheCars.ClearO : UpdateGridO:
1
protected void i!:enu!temE>!it_C.]ick (object sender. System.EventArgs e)
{
Application. Ex-ItC);
}
Код приложения CarLogApp можно найти в подкаталоге Chapter 11
Подведение итогов
В самом начале этой главы определены типы Di rectory (Di rectory Info) и Fi 1 е (Fi 1 е-Info),KOTopbie предназначены для выполнения различных операций с физическими файлами и каталогами на диске. Далее в главе были рассмотрены классы, производные от Stream, - Fi 1 eStream, MemoryStrearn и Buf feredStream. Поскольку названия главных членов у этих классов совпадают, то эти классы в приложениях вполне взаимозаменяемы: нам не потребуется прилагать много усилий, чтобы, например, изменить место сохранения данных из файла в буфере оперативной памяти. Если нам потребуется обеспечить сохранение текстовых данных, наиболее простой и удобный способ сделать это — воспользоваться типами StreamWriter и StreamReader.
Последняя часть этой главы посвящена рассмотрению инфраструктуры .NET, предназначенной для сериализации и десериализации объектов. Мы познакомились с сохранением объектов в двоичном формате и формате SOAP. Несмотря на то что в большинстве случаев для сериализации объектов достаточно просто пометить соответствующий класс как [Ssrializsble], в .NFT предусмотрены средства для обеспечения пользовательских вариантов сериализации (интерфейс и др.).
Взаимодействие с унаследованным программным кодом
Я думаю, что в процессе чтения этой книги вы неоднократно сравнивали возможности ^ЕТитрадиционныхтехнологий создания приложений - COM, MFC, ATL и т. п. Скорее всего, вы убедились, что у .NET есть серьезные преимущества перед каждой из этих технологий. Однако мало кто из программистов может полностью забыть про COM, ATL, MFC, Visual Basic 6.0, Windows DNA и создавать приложения исключительно в среде .NET. Как правило, им приходится обеспечивать взаимодействие со многими тысячами строк унаследованного программного кода. И в .NET предусмотрены мощные и изящные средства реализации такого взаимодействия.
В начале этой главы мы покажем, как типы .NET могут взаимодействовать напрямую с Win32 API при помощи службы PInvoke (Platform Invoke). После этого настанет время обсудить взаимодействие .NETh СОМ, а также вопросы, связанные с RCW (Runtime Callable Wrapper). Далее в этой главе будет исследована обратная ситуация: как типы СОМ могут взаимодействовать с типами .NET при помощи CCW (COM Callable Wrapper). И в самом конце главы мы рассмотрим создание типов .NET, которые смогут взаимодействовать со службами, обеспечиваемыми средой выполнения СОМ+.
Предыдущая << 1 .. 220 221 222 223 224 225 < 226 > 227 228 229 230 231 232 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100