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

С# - Ватсон К.

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


Ниже приведена наиболее простая форма использования этого атрибута:

[AttributeUsage(AttributeTargets.Class)]

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

public class Т itAnObject {

[TestCase {typeof (System.String)) ] ft Недопустимое использование

public TestAnObject ()

(

И Т. Д. ...

)

I

Это приведет к получению следующего сообщения об ошибке:

TestCase.cs(54,4):error CS0592: Attribute ’TestCase’ is not valid on this declaration type.

It is valid on ‘class' declarations only.

(TestCase.cs(54,4):otiiH6Ka CS0592: Использование атрибута ‘TestCase’ недопустимо для дан но го типа объявления. Он может использоваться только с объявлениями ‘class’.)

В перечислимом типе AttributeTargets описаны следующие члены, которые могут использоваться в различных сочетаниях, объединенных с помощью оператора (|), что позволяет определить то множество элементов, в которых допускается использование данного атрибута:

Значение перечислимого типа AttributeTargets Описание
All Является допустимым в любом месте модуля.
Assembly Является допустимым для модуля. В качестве примера можно привести атрибут Assembly Key File, использовавшийся в начале главы.
Class Является допустимым для использования в определении класса. Это значение использовалось для атрибута TestCase. Другим Примером может служить атрибут Serializable.
Constructor Является допустимым только в конструкторах классов.
Delegate Является допустимым только в делегатах.
Enum Может добавляться в описание перечислимого типа. Одним из примеров такого атрибута является атрибут Syatem,FlagsAttribute, который, будучи примененным к некоторому перечислимому типу, определяет, что пользователь имеет возможность использовать побитовый оператор огдля объединения различных значений этого перечислимого типа. В перечислимом типе AttributeTargets этот атрибут также используется.
Event Является допустимым при определении событий.
Атрибуты 637
Продолжение таблицы
Значение перечислимого типа AttributeTargets Описание
Field Может быть размещен в некотором поле, например, во внутренней переменной. В качестве примера можно привести атрибут NonSerialized, который использовался нами ранее для объявления того, что некоторое конкретное значение не должно сохраняться прн сериализации класса.
Interface Является допустимым для интерфейса. Одним нз примеров такого атрибута может служить атрибут GuidAttribute, описанный в пространстве нмен System.Runtime. InteropServices, который позволяет явно определять GUID для данного интерфейса.
Method Определяет, что атрибут может использоваться для метода. Это значение используется, например, атрибутом OneWay, описанном в пространстве имен System.Runtime.Remoting.Messaging.
Module Определяет, что атрибут допустимо использовать в отсеке. Модуль может состоять из нескольких отсеков с кодом; таким образом, этот атрибут позволяет размещать атрибут в отдельном отсеке, а не во всем модуле.
Parameter Может применяться для некоторого параметра в описании метода.
Property Может быть применен к свойству.
RetumValue Может быть привязан к возвращаемому значению функции.
Struct Является допустимым в определении структур.

Область действия атрибута

В первом примере, приведенном в настоящей главе, нам встретились атрибуты Assembly*, синтаксис которых очень напоминает приведенный ниже:

[assembly: AsaemblyTitle(*Wrox rocks')1

Строка assembly: определяет область действия атрибута, которая в данном случае служит для передачи компилятору информации о том, что атрибут Aseembly-Title должен применяться к самому модулю. Модификатор области действия должен применяться только в тех случаях, когда компилятор оказывается не в состоянии самостоятельно определить эту область действия. Допустим, что вы хотите включить атрибут в значение, возвращаемое следующей функцией:

[MyAttribute ()] public long DoSomething О t

)

Когда компилятор дойдет до этого атрибута, он примет вполне обоснованное предположение о том, что атрибут применяется ко всему методу, а это совсем не то, что требуется в данном случае, поэтому следует воспользоваться модификатором области действия, для того чтобы явно указать, к чему данный атрибут относится:

(return:MyAttribute О] public long DoSomething () t
638

Глава 22

Для определения области действия атрибута следует использовать одно нз приведенных ниже значении:

- ? assembly — атрибут применим ко всему модулю

? field — атрибут применим к полю перечислимого типа или класса

? event — атрибут применим к событию

? method — атрибут применим к методу, описанию которого он предшествует

? module — атрибут хранится в отсеке

? рагаш — атрибут применим к параметру

? property — атрибут хранится для данного свойства

? return — атрибут применим к возвращаемому функцией значению
Предыдущая << 1 .. 292 293 294 295 296 297 < 298 > 299 300 301 302 303 304 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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