Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1405 of 1492 menu
◀ ▶

Свойство 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

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить