Свойство AllowMultiple
По умолчанию AllowMultiple
равно false: второй
такой атрибут на одной цели
не компилируется. При
true допустимо несколько
экземпляров.
Синтаксис
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
class NoteAttribute : Attribute
{
}
Пример
Давайте повесить Note
дважды на класс Gate:
using System;
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
class NoteAttribute : Attribute
{
}
[Note]
[Note]
class Gate
{
}
class Program
{
static void Main()
{
int res = Attribute.GetCustomAttributes(
typeof(Gate),
typeof(NoteAttribute)).Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
2
Пример
Давайте прочитать флаг
AllowMultiple из метаданных:
using System;
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
class NoteAttribute : Attribute
{
}
class Program
{
static void Main()
{
AttributeUsageAttribute usage = (AttributeUsageAttribute)
Attribute.GetCustomAttribute(
typeof(NoteAttribute),
typeof(AttributeUsageAttribute));
bool res = usage.AllowMultiple;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте сравнить число атрибутов с одним экземпляром:
using System;
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
class NoteAttribute : Attribute
{
}
[Note]
class Single
{
}
class Program
{
static void Main()
{
int res = Attribute.GetCustomAttributes(
typeof(Single),
typeof(NoteAttribute)).Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Смотрите также
-
AttributeUsage,
цели атрибута -
Inherited,
наследование -
Attribute,
базовый класс -
Атрибут,
синтаксис