Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 292

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 286 287 288 289 290 291 < 292 > 293 294 295 296 297 298 .. 404 >> Следующая


public void NewMethod О '

(

)

Вы, естественно, хотите разрешить пользователям вашей библиотеки работать с методом OriginalMethod () на протяжении еще некоторого времени, но вы также желаете уведомить их о том, что появился более новый метод, с помощью выдачи предупредительного сообщения в процессе компиляции, информирующего пользователей о существовании метода NewMethodO. Все, что для этого потребуется,— это добавить атрибут obsolete, как это показано ниже:

IObeoleteI‘Вместо этого следует использовать метод NewMethod.') ] public void OriginalMethod О {

}

При компиляции отладочной или окончательной версии компилятор C# выдаст предупреждение, что вы используете устаревший метод (или метод, который устареет через некоторое время):

obsolete.cs(10,3) : warning CS0618: 'Developer.OriginalMethod<) is obsolete:

(Метод De ve loper. Origi naiMe thod() устарел:)

’Use NewMethod instead1

(’Вместо этого следует использовать метод NewMethod’)

С течением времени всем пользователям надоест видеть это предупредительное сообщение при каждой компиляции их программы, и в конечном итоге все пользователи (на самом деле, почти все) перейдут на использование метода NewMethodO. Спустя еще какое-то время вы примете решение окончательно отказаться от поддержки метода OriginalMethod(), для чего вам потребуется включить в атрибут obsolete дополнительный параметр:

[Obsolete('Вместо этом следует использовать метод NewMethod.'. true))

public void CodlnC <)

С

)

Теперь, еслн какой-нибудь пользователь попытается откомпилировать этот метод, компилятор сгенерирует ошибку и прекратит процедуру компиляции с выдачей следующего сообщения:

obsolete.cs(10,3): error CSQ619: 'Developer.OriginalMethod() is obsolete:

{Метод Developer. OriginalMet hod() устарел:)

‘You must use NewMethod instead.¦

(‘Вместо этого следует использовать метод NewMethod’)
624

Глава 22

Использование этого атрибута обеспечивает предоставление помощи пользователям при изменении класса в процессе осуществления модификации их собственных приложении, где этот класс используется.

Для классов, представленных в двончном виде, напрнмер, для компонентов, приобретаемых без исходных текстов, такой способ работы с версиями не может быть рекомендован. В .NET существуют встроенные возможности (обсуждаемые выше) для работы с версиями. Подобные возможности предупреждают, что больше не следует пользоваться какой-либо возможностью созданных нами классов.

Атрибут System.SerializableAttribute

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

Все, кому ранее приходилось программировать на MFC, ATL нлн VB и кто был вынужден постоянно думать о том, каким образом сохранить или считать данные некоего экземпляра, поймут, от какого объема вводимой информации может избавить этот атрибут. Предположим, что у вас имеется некоторый объект, который необходимо сохранить в файле н который описывается следующим образом:

public class Person {

public Person О {

}

public int Age;

public int Weight InPoundaj

) Щ'-V- JlVI

В C# {и в любом другом структурном языке программирования) есть возможность сериализовать члены данного экземпляра без написания какого-либо кода. Все, что вас требуется,— это включить в класс атрибут serializable, а все остальное сделает за вас система выполнения программ .NET,

Когда в названную систему поступает запрос на сериализацию какого-нибудь объекта, то она проверяет, реализован лн в классе данного объекта интерфейс iserializable, и если нет, то имеется лн в этом классе атрибут serializable. Мы не будем обсуждать интерфейс iserializable — это слишком сложная тема для данной книги, к тому же по этой теме уже существует вполне приличная документация в MSDN.

Если в классе обнаруживается атрибут serializable, то .NET использует отражение для того, чтобы получить все данные конкретного экземпляра — независимо от того, описаны лн онн как общие, защищенные или частные, и сохранить их как представление этого объекта. Десериализация представляет собой процесс, обратный описанному,— данные считываются с носителя информации и присваиваются переменным экземплярам данного класса.

Ниже приводится пример класса, помеченного атрибутом Serializable:

[Serializable]

public class Person (

public Person (

)
Атрибуты

625

public int Agej

public int WeightInPoundsj

)

Практикум: сериализация

Полностью код данного примера ищите в поддиректории chapter22/seriaiize. Для того чтобы сохранить экземпляр класса Person, используется объект Formatter, который преобразовывает данные, хранящиеся в классе, в последовательность байтов. Система поставляется с двумя типами таких объектов, используемых по умолчанию,— BinaryFonnatter и soapFormntter (каждый нз них обладает своим пространством имен В пространстве имен System.Runtime.Serialization.Formatters). Программа, приведенная ниже, демонстрирует, каким образом можно использовать BinaryFonnatter для сохранения объекта класса pereon:
Предыдущая << 1 .. 286 287 288 289 290 291 < 292 > 293 294 295 296 297 298 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.