Чтение онлайн

на главную - закладки

Жанры

Программирование на Visual C++. Архив рассылки

Jenter Алекс

Шрифт:

Это все на сегодня. Пока!

Алекс Jenter [email protected] Duisburg, 2001. Публикуемые в рассылке материалы принадлежат сайту RSDN.

Программирование на Visual C++

Выпуск №68 от 17 марта 2002 г.

Здравствуйте, уважаемые подписчики!

СТАТЬЯ 

Использование атрибутов в среде .NET

Автор: Алифанов Андрей

Демонстрационный

проект

АТРИБУТ. Необходимый, постоянный признак, принадлежность.

"Толковый словарь русского языка", С.И. Ожегов
Введение

Если вы когда-либо программировали на C++, вам должны быть знакомы определения, такие как public и private, предоставляющие дополнительную информацию о членах класса. Эти ключевые слова задают поведение членов класса, описывая их доступность извне. Так как компиляторы распознают только предопределенные ключевые слова, вы не имеете возможности создавать свои собственные.

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

Когда вы компилируете свой код, он преобразуется в Microsoft Intermediate Language (MSIL) и помещается в файл формата Portable Executable (PE) вместе с метаданными, сгенерированными компилятором. Атрибуты позволяют добавить к метаданным дополнительную информацию, которая затем может извлекаться при помощи механизма рефлексии. Компилятор создает атрибуты, когда вы объявляете экземпляры специальных классов, наследующих от System.Attribute.

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

Вы можете использовать атрибуты для произвольного комментирования кода и управления поведением компонентов. Атрибуты позволяют добавлять описательные элементы в C#, управляемые расширения для C++, Microsoft Visual Basic.NET или в любой другой язык, поддерживающий CLR, без необходимости переписывать компилятор.

Кроме того, атрибуты можно использовать в ATL проектах, но это тема уже другой статьи.

Применение атрибутов

Большинство атрибутов применяется к таким элементам языка как классы, методы, поля и свойства. Но некоторые атрибуты являются глобальными – они воздействуют на всю сборку или модуль. Глобальные атрибуты в текстах программ объявляются после using директив верхнего уровня перед определениями типов и пространств имен. Они могут использоваться в разных исходных файлах одной программы.

Применение атрибутов на уровне классов и методов

Атрибуты в программном коде используются следующим образом:

1. Определяется новый или берется

существующий в .NET Framework атрибут

2. Инициализируется конкретный экземпляр атрибута с помощью вызова конструктора атрибута.

Атрибут помещается в метаданные при компиляции кода и становится доступен CLR и любым инструментальным средствам и приложениям через механизмы рефлексии.

По соглашению, имена всех атрибутов оканчиваются словом Attribute. Однако, языки из VisualStudio.NET, не требуют задания полного имени атрибута. Например, если нужно инициализировать атрибут System.ObsoleteAttribute, достаточно написать Obsolete.

Следующий пример показывает, как использовать атрибут System.ObsoleteAttribute, помечающий код как устаревший. Атрибуту передается строка "Будет удалено в следующей версии". Этот атрибут заставляет компилятор выдать переданную строку как предупреждение при компиляции помеченного кода.

C#

using System;

public class MainApp {

 public static void Main {

//На этой строке компилятор выдаст предупреждение.

int MyInt = Add(2,2);

 }

 //В C# атрибуты задаются в квадратных скобках.

 //Этот атрибут применяется только к методу Add.

 [Obsolete("В следующей версии метод будет удален")]

 public static int Add(int a, int b) {

return (a + b);

 }

}

MC++

#using <mscorlib.dll>

using namespace System;

int Add(int a, int b);

void main(void) {

 //На этой строке компилятор выдаст предупреждение.

 int MyInt = Add(2, 2);

 return;

}

//В MC++ атрибуты задаются в квадратных скобках.

//Этот атрибут применяется только к методу Add.

[Obsolete(S"В следующей версии метод будет удален")]

int Add(int a, int b) {

 return (a + b);

}

Visual Basic.NET

Imports System

Public Module main

Sub Main

 'На этой строке компилятор выдаст предупреждение.

 Dim MyInt as Integer = Add(2,2)

End Sub

' В Visual Basic.NET атрибуты задаются между скобками < и >.

' Этот атрибут применяется только к методу Add.

Поделиться:
Популярные книги

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Надуй щеки! Том 2

Вишневский Сергей Викторович
2. Чеболь за партой
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Надуй щеки! Том 2

Новый Рал 7

Северный Лис
7. Рал!
Фантастика:
попаданцы
5.00
рейтинг книги
Новый Рал 7

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Фею не драконить!

Завойчинская Милена
2. Феями не рождаются
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Фею не драконить!

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22

Новый Рал 3

Северный Лис
3. Рал!
Фантастика:
попаданцы
5.88
рейтинг книги
Новый Рал 3

Ученик. Книга 4

Первухин Андрей Евгеньевич
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Ученик. Книга 4

Ворон. Осколки нас

Грин Эмилия
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ворон. Осколки нас