Атрибут
Атрибут пишут в квадратных
скобках перед объявлением.
Свой класс наследует
Attribute.
Суффикс Attribute в
скобках можно опустить:
[Note] вместо
[NoteAttribute].
Синтаксис
[Note]
class Sample
{
}
Пример
Давайте пометить класс и проверить наличие атрибута:
using System;
[AttributeUsage(AttributeTargets.Class)]
class NoteAttribute : Attribute
{
}
[Note]
class Sample
{
}
class Program
{
static void Main()
{
bool res = typeof(Sample).IsDefined(typeof(NoteAttribute), false);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте прочитать атрибут через отражение:
using System;
[AttributeUsage(AttributeTargets.Class)]
class NoteAttribute : Attribute
{
}
[Note]
class Sample
{
}
class Program
{
static void Main()
{
NoteAttribute note = (NoteAttribute)Attribute.GetCustomAttribute(
typeof(Sample),
typeof(NoteAttribute));
bool res = note != null;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте сравнить имя типа атрибута и короткую запись:
using System;
[AttributeUsage(AttributeTargets.Class)]
class NoteAttribute : Attribute
{
}
class Program
{
static void Main()
{
string res = typeof(NoteAttribute).Name;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"NoteAttribute"
Смотрите также
-
Attribute,
базовый класс -
AttributeUsage,
где можно ставить -
Obsolete,
устаревшее API -
Flags,
битовый enum