Сел, разобрался, прочитал непонятные определения и предлагаю полученное мной понимание о том что же это такое.
Атрибут — это класс, унаследованный от базового класса Attribute.
Суть атрибута в том, что он используется для генерации описаний. Создав атрибут вы можете наделить его своими свойствами которыми вы желаете наградить класс, поле, свойство или метод, Атрибут не влияет на значение полей и свойств и на выполнение методов класса, если в теле метода не учитывается информация хранящаяся в атрибуте. Но есть очень важный момент — Значение атрибута невозможно изменять в процессе выполнения кода, так как значения их свойств хранятся в виде констант в скомпилированном модуле
Например с помощью атрибутов вы можете проанализировав их значения для типа построить различные схемы выполнения действий над ним.
Не очень понятно, тогда пример:
Есть арибут:
public class MyAttribute : Attribute // создаём собственный атрибут наследуясь от стандартного класса { public int Count { get; set; } // создаём своё свойство которое будет содержать атрибут // можно описать несколько свойств но для примера создаётся только одно }
И некий класс который мы наградим описанным атрибутом и будем использовать его значение для формирования результата функции GetArray:
[MyAttribute{ Count = 3 }] public class IntArrayInitializer { public int[] GetArray() { var type = this.GetType(); // получение описания типа if (Attribute.IsDefined(type, typeof(MyAttribute))) // проверка на существование атрибута { var attributeValue = Attribute.GetCustomAttribute(type, typeof(MyAttribute)) as MyAttribute; // получаем значение атрибута return new int[attributeValue.Count]; // используем значение атрибута для формирования результата } return new int[0]; } }
Как видно из кода, сначала мы получаем описание нашего класса, далее проверяем наличие нашего атрибута и в случае его наличия мы формируем массив с указанным в атрибуте количеством элементов.
А теперь унаследовавшись от этого класса и задав новому классу другое значение атрибута при вызове метода мы получим массив нужной размерности.
Данная статья даёт только общее и скудное описание атрибутов, но используя его, можно понять, что это такое.
ссылка на оригинал статьи http://habrahabr.ru/post/172859/
Добавить комментарий