Атрибут в программировании это
C#. Индексаторы класса и атрибуты
Атрибуты
Язык С# позволяет создавать атрибуты для различных элементов языка, таких как типы, методы, поля и свойства классов. Данные, хранимые в атрибутах, можно запрашивать во время выполнения приложения. Атрибуты — это механизм, позволяющий создавать самоописывающиеся приложения.
Использование атрибутов позволяет получать метаданные периода выполнения.Каждый атрибут — это экземпляр класса, производного от System . Attribute .
Назначаемый типу или члену класса атрибут указывается в квадратных скобках перед типом или членом класса.
Про атрибут , указанный для класса, иногда говорят, что этот атрибут «прикреплен к целевому типу».
Класс Attribute пространства имен System предоставляет следующие члены класса:
- GetType — получает объект типа Type текущего экземпляра;
- ToString — возвращает строку, описывающую данный объект;
- IsDefined — определяет, существует ли атрибуты заданного типа, назначенные указываемому члену класса;
- GetCustomAttribute — запрашивает атрибут заданного типа для указанного члена класса.
Для класса Attribute определено свойство TypeId , определяющее уникальный идентификатор атрибута.
Назначение атрибута
Для того, чтобы назначить атрибут элементу кода, можно:
- определить новый класс атрибута
- использовать существующий класс атрибута из библиотеки NET Framework.
Атрибут указывается в квадратных скобках перед элементом, которому он назначается. Назначаемый атрибут инициализируется вызовом конструктора с соответствующими параметрами.
Класс System.ObsoleteAttribute позволяет помечать код и задавать информацию, которая будет отображаться как Warning во время компиляции приложения. Этот класс предназначается для возможности указания некоторого кода модуля как «устаревшего».Для того чтобы использовать существующий класс для назначаемого методу атрибута, следует:
- создать метод, использующий атрибут (например, метод, при каждом вызове которого компилятор будет формировать сообщение Warning с указанным в атрибуте кодом);
- ввести перед определением метода в квадратных скобках имя класса атрибута (например, класса ObsoleteAttribute ).
Язык С# при назначении атрибута позволяет не указывать суффикс Attribute . Так, вместо [ObsoleteAttribute(«»)] можно записать [Obsolete(«»)] .
Класс атрибута должен иметь хотя бы один public-конструктор.
Создание атрибута
Создание атрибута начинается с создания класса, реализующего атрибут. Такой класс должен быть наследуем от любого класса атрибута. Класс атрибута всегда должен иметь модификатор доступа public .
Класс атрибута всегда непосредственно или опосредованно наследуется от класса System.Attribute .
Параметры атрибута
По умолчанию код класса атрибута содержит конструктор без параметров.Для того чтобы иметь возможность при назначении атрибута сохранять для типа или члена класса некоторые параметры, эти параметры надо задать как параметры конструктора класса атрибута. Параметры атрибута могут объявляться как переменные члены класса.
Для доступа к защищенным переменным членам класса в языке C# используются свойства.
Для создания свойства в среде проектирования VisualStudio.NET можно использовать мастер построения свойства: для этого в окне Class View следует выделить секцию c именем класса и выполнить команду контекстного меню Add|Add Property .
В диалоге C# Property Wizard (рис. 17.2) в поле Property Name следует указать имя создаваемого свойства.
Тип создаваемого свойства выбирается из списка Property type .
На панели Accessors переключатели get и set определяют, какие методы-аксессоры будут созданы. Например:
Вопросы и ответы
Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?
Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами — членами класса, в примере о бъявления указателя на метод использовали в формальном описании оба названия:
тип_метода (имя_класса::*имя_метода_указателя)
(список параметров);
тип_функции (*имя_ функции_указателя)
(список параметров);
при этом можно было тип_функции во втором описании заменить на тип_метода? Т.е.:
тип_метода (*имя_ метода_указателя)
(список параметров);
BestProg
Понятие ER-модели. Понятие сущности (entity). Атрибуты. Виды атрибутов
Содержание
1. Какие проблемы могут возникнуть у разработчика при проектировании базы данных?
При проектировании базы данных и разработке программного продукта наиболее важной проблемой есть проблема взаимодействия разработчика с заказчиком. Задача разработчика – наиболее точно воссоздать пожелания заказчика при разработке программного продукта управления базой данных. Основная проблема, которую нужно решить разработчику – правильное построение базы данных, а точнее схемы (структуры) базы данных.
Кроме того, разработчик дополнительно встречается с другими трудностями, к которым можно отнести:
- поиск эффективных алгоритмов;
- подбор надлежащих структур данных;
- отладка и тестирование сложного кода;
- дизайн и удобство интерфейса приложения.
В процессе разработки программного обеспечения, управляющего базой данных, разработчик должен подробно выучить требования заказчика. База данных должна быть разработана таким образом, чтобы она была понятной, наиболее точно отображала решаемую проблему и не содержала избыточности в данных.
Чтобы облегчить процесс разработки (проектирования) базы данных, используются так называемые семантические модели данных. Для разных видов баз данных наиболее известной есть ER-модель данных (Entity-Relationship model).
2. Что такое ER-модель (Entity-relationship model)? Для чего нужно разрабатывать ER-модель?
ER-модель (Entity-relationship model или Entity-relationship diagram) – это семантическая модель данных, которая предназначена для упрощения процесса проектирования базы данных. Из ER-модели могут быть порождены все виды баз данных: реляционные, иерархические, сетевые, объектные. В основе ER-модели лежат понятия «сущность», «связь» и «атрибут».
Для больших баз данных построение ER-модели позволяет избежать ошибок проектирования, которые чрезвычайно сложно исправлять, в особенности, если база данных уже эксплуатируется или на стадии тестирования. Ошибки в разработке структуры базы данных могут привести к переделке кода программного обеспечения управляющего этой базой данных. В результате время, средства и человеческие ресурсы будут использованы неэффективно.
ER-модель – это представление базы данных в виде наглядных графических диаграмм. ER-модель визуализирует процесс, который определяет некоторую предметную область. Диаграмма «сущность»-«связь» – это диаграмма, которая представляет в графическом виде сущности, атрибуты и связи.
ER-модель – это только концептуальный уровень моделирования. ER-модель не содержит деталей реализации. Для той же самой ER-модели детали ее реализации могут отличаться.
3. Что такое сущность в базе данных? Примеры
Сущность в базе данных – это любой объект в базе данных, который можно выделить исходя из сути предметной области для которой разрабатывается эта база данных. Разработчик базы данных должен уметь правильно определять сущности.
Пример 1. В базе данных книжного магазина можно выделить следующие сущности:
Пример 2. В базе данных учета учебного процесса некоторого учебного заведения можно выделить следующие сущности:
- студенты (ученики);
- преподаватели;
- группы;
- дисциплины, которые изучаются.
4. Какие существуют разновидности типов сущностей? Обозначение типов сущностей в ER-модели
В модели «сущность»-«связь» различают две разновидности типов сущностей:
- слабый тип. Этот тип сущности есть зависимым от сильной сущности;
- сильный тип. Это самостоятельный тип сущности, который ни от кого не зависит.
На рисунке 1 изображены обозначения слабого и сильного типа сущности в ER-модели.
Рис. 1. Обозначение сильного и слабого типов сущности
5. Для чего предназначены атрибуты? Виды атрибутов. Обозначение атрибутов на ER-модели
Каждый тип сущности имеет определенный набор атрибутов. Атрибуты предназначены для описания конкретной сущности.
Различают следующие виды атрибутов:
- простые атрибуты. Это атрибуты, которые могут быть частью составных атрибутов. Эти атрибуты состоят из одного компонента. Например, к простым атрибутам можно отнести: код книги в библиотеке или курс обучения студента в учебном заведении;
- составные атрибуты. Это атрибуты, которые состоят из нескольких простых атрибутов. Например, адрес проживания может содержать название страны, населенного пункта, улицы, номера дома;
- однозначные атрибуты. Это атрибуты, которые содержат только одно единственное значение для некоторой сущности. Например, атрибут «Номер зачетной книги» для типа сущности «Студент» есть однозначным, так как студент может иметь только один номер зачетной книги (одно значение);
- многозначные атрибуты. Это атрибуты, которые могут содержать несколько значений. Например, многозначный атрибут «Номер телефона» для сущности «Студент», так как студент может иметь несколько номеров телефона (домашний, мобильный и т.д.);
- произвольные атрибуты. Это атрибуты, значение которых формируется на основе значений других атрибутов. Например, текущий курс обучения студента можно вычислить на основе разности текущего года обучения и года поступления студента в учебное заведение (если студент не имел проблем с учебой и хорошо учил дисциплину «Организация баз данных и знаний»).
На ER-диаграмме атрибуты обозначаются так, как изображено на рисунке 2. Как видно из рисунка, любой атрибут обозначается в виде эллипса с названием внутри эллипса. Если атрибут есть первичным ключом, то его название подчеркивают.
Рисунок 2. Представление атрибутов на диаграммах ER-модели
6. Как типы сущностей и атрибуты ER-модели реализуются в реальных базах данных и управляемых ими программах?
При разработке программ управления базами данных, типы сущностей и их атрибуты можно представлять по разному при этом придерживаясь нескольких подходов:
- выбрать в качестве источника данных известную технологию (например Microsoft SQL Server, Oracle Database, Microsoft Access, Microsoft ODBC Data Source и т.п.), которая уже исследована, протестирована, стандартизирована и имеет огромный набор средств управления базой данных;
- разработать собственный формат базы данных и реализовать методы ее обработки, а взаимодействие с известными источниками данных реализовать в виде специальных команд наподобие Импорт/Экспорт. В этом случае придется собственноручно программировать всю рутинную работу по ведению и обеспечению надежной работы базы данных;
- реализовать объединение двух вышеприведенных подходов. Современные средства разработки программного обеспечения имеют мощный набор библиотек для обработки сложных наборов и визуализации данных в них (коллекции, массивы, компоненты визуализации и т.п.).
Если база данных реализуется в известных реляционных СУБД (например Microsoft Access, Microsoft SQL Server и т.п.), то типы сущностей представляются таблицами. Атрибуты из ER-модели соответствуют полям таблицы. Одна запись в таблице базы данных представляет один экземпляр сущности.
Каждый вид атрибута реализуется следующим образом:
- простой атрибут или однозначный атрибут может быть представлен доступным набором базовых типов, которые есть в любом языке программирования. Например, целочисленные атрибуты представляются типом int , integer , uint и т.д.; атрибуты содержащие дробную часть могут быть представлены типом float , double ; строчные атрибуты типом string и т.д.;
- составной атрибут – это объект, который включает в себя несколько вложенных простых атрибутов. Например, в СУБД Microsoft Access составной атрибут некоторой таблицы может формироваться на основе набора простых типов (полей). В языках программирования объединение полей реализуется структурами или классами;
- многозначный атрибут может быть реализован массивом или коллекцией простых или составных атрибутов;
- произвольный атрибут реализуется дополнительным полем, которое вычисляется при обращении к таблице. Такое поле называется вычислительным полем (calculated field) и формируется на основе других полей таблицы;
- атрибут, который есть первичным ключом может быть целочисленным, строчным или иного порядкового типа. В этом случае, значение каждой ячейки таблицы, которая соответствует первичному ключу, есть уникальным. Наиболее часто, в качестве первичного ключа выступает целый тип ( int , integer ).
Если база данных реализована в уникальном формате, то типы сущностей удобнее всего представлять в виде классов или структур. Атрибуты сущности реализуются в виде полей (внутренних данных) класса. Методы класса реализуют необходимую обработку полей класса (атрибутов). Взаимодействие (связь) между классами реализуется с помощью специально разработанных интерфейсов с использованием известных шаблонов проектирования.
7. Пример фрагмента ER-модели для типа сущности «Студент»
Приведенный пример демонстрирует фрагмент ER-модели для типа сущности «Студент».
Рисунок 3. Фрагмент ER-модели для типа сущности «Студент»
На вышеприведенном рисунке объявляются следующие атрибуты, которые в СУБД (программе) могут иметь следующие типы:
- атрибут Первичный ключ – есть уникальным целочисленным значением которое формируется автоматически. В СУБД это есть поле-счетчик;
- атрибут Год вступления – простой атрибут, который можно реализовать целочисленным значением ( int , integer );
- атрибут Номер телефона – многозначный атрибут, который может быть реализован как массив или коллекция и т.п.;
- атрибут Номер зачетной книжки – простой атрибут, который можно реализовать как строку символов, поскольку номер зачетной книжки кроме цифр может содержать и буквы;
- атрибут Страна , Город , Улица , Номер дома – это атрибуты, которые образуют составной атрибут Адрес . Все эти атрибуты могут быть строчного (текстового) типа ( string , Text );
- атрибут Фамилия , Имя , Отчество – это простые атрибуты, которые являются частью составного атрибута Имя студента . Все эти атрибуты могут быть строчного (текстового) типа ( string , Text );
- атрибут День рождения – простой атрибут типа Дата ( DateTime );
- атрибут Возраст студента – вычисляемое поле, которое определяется как разность текущей (системной) даты и значения атрибута День рождения .
Атрибуты
В C# разрешается вводить в программу информацию декларативного характера в форме атрибута, с помощью которого определяются дополнительные сведения (метаданные), связанные с классом, структурой, методом и т.д. Например, в программе можно указать атрибут, определяющий тип кнопки, которую должен отображать конкретный класс. Атрибуты указываются в квадратных скобках перед тем элементом, к которому они применяются. Следовательно, атрибут не является членом класса, но обозначает дополнительную информацию, присоединяемую к элементу.
Одной из задач компилятора .NET является генерирование описаний метаданных для всех типов, которые были определены, и на которые имеется ссылка в текущем проекте. Помимо стандартных метаданных, которые помещаются в любую сборку, программисты в .NET могут включать в состав сборки дополнительные метаданные с использованием атрибутов. В сущности, атрибуты представляют собой не более чем просто аннотации, которые могут добавляться в код и применяться к какому-то конкретному типу (классу, интерфейсу, структуре и т.д.), члену (свойству, методу и т.д.), сборке или модулю.
Концепция аннотирования кода с применением атрибутов является далеко не новой. Еще в COM IDL (Interface Definition Language — язык описания интерфейсов) поставлялось множество предопределенных атрибутов, которые позволяли разработчикам описывать типы, содержащиеся внутри того или иного СОМ-сервера. Однако в СОМ атрибуты представляли собой немногим более чем просто набор ключевых слов. Когда требовалось создать специальный атрибут, разработчик в СОМ мог делать это, но затем он должен был ссылаться на этот атрибут в коде с помощью 128-битного числа (GUID-идентификатора), что, как минимум, довольно затрудняло дело.
В .NET атрибуты представляют собой типы классов, которые расширяют абстрактный базовый класс System.Attribute. В поставляемых в .NET пространствах имен доступно множество предопределенных атрибутов, которые полезно применять в своих приложениях. Более того, можно также создавать собственные атрибуты и тем самым дополнительно уточнять поведение своих типов, создавая для атрибута новый тип, унаследованный от Attribute.
Ниже перечислены некоторые из предопределенных атрибутов, предлагаемые в различных пространствах имен .NET:
[CLSCompliant]
Заставляет элемент, к которому применяется, отвечать требованиям CLS (Common Language Specification — общеязыковая спецификация). Вспомните, что типы, которые отвечают требованиям CLS, могут без проблем использоваться во всех языках программирования .NET
[DllImport]
Позволяет коду .NET отправлять вызовы в любую неуправляемую библиотеку кода на С или С++, в том числе и API-интерфейс лежащей в основе операционной системы. Обратите внимание, что при взаимодействии с программным обеспечением, работающим на базе СОМ, этот атрибут не применяется
[Obsolete]
Позволяет указать, что данный тип или член является устаревшим. Когда другие программисты попытаются использовать элемент с таким атрибутом, они получат соответствующее предупреждение от компилятора
[Serializable]
Позволяет указать, что класс или структура является «сериализируемой», т.е. способна сохранять свое текущее состояние в потоке
[NonSerialized]
Позволяет указать, что данное поле в классе или структуре не должно сохраняться в процессе сериализации
[WebMethod]
Позволяет указать, что метод может вызываться посредством HTTP-запросов, и CLR-среда должна преобразовывать его возвращаемое значение в формат XML
Важно уяснить, что при применении атрибутов в коде размещающиеся внутри них метаданные, по сути, остаются бесполезными до тех пор, пока не запрашиваются явным образом в каком-то другом компоненте программного обеспечения посредством рефлексии. Если этого не происходит, они спокойно игнорируются и не причиняют никакого вреда.
Потребители атрибутов
Как нетрудно догадаться, в составе NET Framework 4.0 SDK поставляется множество утилит, которые позволяют производить поиск разнообразных атрибутов. Даже сам компилятор C# (csc.ехе) запрограммирован так, что он проверяет наличие разных атрибутов во время компиляции. Например, сталкиваясь с атрибутом [CLSCompilant], он автоматически проверяет соответствующий элемент и удостоверяется в том, что в нем содержатся только отвечающие требованиям CLS инструкции, а при обнаружении элемента с атрибутом [Obsolete] отображает внутри окна ErrorList (Список ошибок) в Visual Studio 2010 соответствующее предупреждение.
Помимо утилит, предназначенных для использования во время разработки, многие методы в библиотеках базовых классов .NET тоже изначально запрограммированы так, чтобы распознавать определенные атрибуты посредством рефлексии. Например, чтобы информация о состоянии объекта сохранялась в файле, все, что потребуется делать — это просто добавить в класс или структуру в виде аннотации атрибут [Serializable]. Встретив этот атрибут, метод Serialize() из класса BinaryFormatter автоматически сохраняет соответствующий объект в файле в компактном двоичном формате.
CLR-среда в .NET тоже выполняет проверки на предмет наличия определенных атрибутов. Самым известным из них, пожалуй, является атрибут [WebMethod], который применяется для создания веб-служб XML с помощью ASP.NET. Чтобы можно было получать доступ к методу посредством HTTP-запросов, а его возвращаемое значение автоматически преобразовывалось в формат XML, понадобится применить к этому методу атрибут [WebMethod], а обо всех остальных деталях будет заботиться CLR-среда. Помимо разработки веб-служб, атрибуты также играют важную роль в функционировании системы безопасности .NET, в Windows Communication Foundation, в обеспечении функциональной совместимости между СОМ и .NET, и во многом другом.
И, наконец, допускается разрабатывать приложения, способные распознавать специальные атрибуты, а также любые из тех, что поставляются в составе библиотек базовых классов .NET. Это позволяет, по сути, создавать набор «ключевых слов», понятных только определенному множеству сборок.
Атрибут
Атрибу́т (от лат. attributio — приписывание, признак):
- Атрибут — в мифологии и иконографии предмет, служащий постоянным устойчивым знаком и отличительным признаком мифологического или реального персонажа или аллегорической персонификации какого-либо понятия (молнии Зевса, весы и повязка Фемиды).
- Атрибут — в некоторых файловых системах одно из свойств файла (см.: Файл#Атрибуты).
- Атрибут — иное название для поля класса в объектно-ориентированном программировании.
- Атрибут, поле — в реляционных базах данных элемент данных в кортеже.
- Атрибут — в языках программирования платформы Microsoft .NET средство реализации декларативности.
- Атрибут — в SGML, HTML, XML и подобных языках часть тега.
- Атрибут — в философии — необходимое, существенное, неотъемлемое свойство предмета или явления (в отличие от преходящих, случайных его состояний).
- Атрибут — в лингвистике — то же, что и определение.
- Атрибут — характеристика способностей персонажа в RPG.
См. также
Wikimedia Foundation . 2010 .
Смотреть что такое «Атрибут» в других словарях:
АТРИБУТ — (от лат. attribuo придаю, наделяю) необходимое, существенное свойство объекта. Напр., А. материальных вещей протяженность, вес, цвет и т.п. Уже Аристотель отличал постоянные А. от акциденций случайных, преходящих состояний. В дальнейшем под А.… … Философская энциклопедия
Атрибут — в базах данных имя или структура поля записи. Атрибут характеризует размер или тип информации, содержащейся в поле. По английски: Attribute См. также: Реляционная модель данных Финансовый словарь Финам. Атрибут Атрибут в диаграммах сущность связь … Финансовый словарь
АТРИБУТ — [лат. attributum приданное] 1) филос. неотъемлемое, существенное свойство объекта (напр., движение а. материи); 2) лингв. то же, что определение; 3) существенный признак, постоянное свойство чего л., неотъемлемая принадлежность предмета. Словарь… … Словарь иностранных слов русского языка
атрибут — Принадлежность, свойство. При изображении языческих богов молния служит атрибутом Юпитера, лира Аполлона, сова Минервы. .. См … Словарь синонимов
атрибут — а, м. attribut m., лат. attributum. 1. Необходимое, существенное, неотъемлемое свойство объекта или явления в отличие от случайных, преходящих его состояний. БАС 2. Сорная рожь оказалась распадающеся при созревании на колоски, опадающие на землю … Исторический словарь галлицизмов русского языка
Атрибут — (от лат. attribuo придаю, наделяю) в изобразительном искусстве, постоянный вещественный признак персонажа, служащий для его опознавания и указывающий на его аллегории, или символическое значение (например, в античном искусстве атрибут… … Художественная энциклопедия
АТРИБУТ — (от латинского attribuo придаю, наделяю), необходимое, существенное, неотъемлемое свойство объекта (например, в философии Спинозы атрибут субстанции протяжение и мышление) … Современная энциклопедия
АТРИБУТ — (от лат. attribuo придаю наделяю). 1) необходимое, существенное, неотъемлемое свойство объекта (напр., атрибут материи в философии движение)2)] В языкознании то же, что определение … Большой Энциклопедический словарь
АТРИБУТ — АТРИБУТ, АТТРИБУТ, атрибута, муж. (лат. attributum). 1. Необходимый признак предмета или явления (филос.). || Постоянная принадлежность, характерный признак (книжн.). Молния обычный атрибут изображений Юпитера. 2. Определительное слово (линг.).… … Толковый словарь Ушакова
АТРИБУТ — АТРИБУТ, АТТРИБУТ, атрибута, муж. (лат. attributum). 1. Необходимый признак предмета или явления (филос.). || Постоянная принадлежность, характерный признак (книжн.). Молния обычный атрибут изображений Юпитера. 2. Определительное слово (линг.).… … Толковый словарь Ушакова
АТРИБУТ — муж., лат. отличительная принадлежность, присвоенный кому или чему знак, предмет для отличия; доспехи. Атрибут Юпитера орел. Атрибуты швейцара трость или булава и перевязь. Атрибутные знаки. Толковый словарь Даля. В.И. Даль. 1863 1866 … Толковый словарь Даля
Использование атрибутов в среде .NET
Автор: Алифанов Андрей
The RSDN Group
Опубликовано: 04.03.2001
Исправлено: 13.03.2005
Версия текста: 1.0
Введение
Если вы когда-либо программировали на 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 директив верхнего уровня перед определениями типов и пространств имен. Они могут использоваться в разных исходных файлах одной программы.
Применение атрибутов на уровне классов и методов
Атрибуты в программном коде используются следующим образом:
- Определяется новый или берется существующий в .NET Framework атрибут
- Инициализируется конкретный экземпляр атрибута с помощью вызова конструктора атрибута.
Атрибут помещается в метаданные при компиляции кода и становится доступен CLR и любым инструментальным средствам и приложениям через механизмы рефлексии.