// В MC++ несколько атрибутов могут определяться в разных блоках,
// ограниченных скобками или в одном блоке – через запятую.
// Порядок следования атрибутов неважен.
[MyAttribute][YourAttribute]
void MyMethod {
//…
}
}
Visual Basic.NET
'
В Microsoft Visual Basic.NET несколько атрибутов разделяются запятыми.
' Порядок следования атрибутов неважен.
Public Class MyClass
Public Sub <MyAttribute, YourAttribute> MyMethod
'…
End Sub
End Class
И, наконец, рассмотрим класс YourClass – наследник MyClass. С методом MyMethod этого класса будет связан только атрибут MyAttribute.
C#
public class YourClass : MyClass {
// Этот метод имеет только атрибут MyAttribute.
public void MyMethod {
//…
}
}
MC++
public gc class YourClass : public MyClass {
public:
// Этот метод имеет только атрибут MyAttribute.
void MyMethod {
//…
}
}
Visual Basic.NET
Public Class YourClass
Inherits MyClass
' Этот метод имеет только атрибут MyAttribute.
Public Sub MyMethod
'…
End Sub
End Class
Свойство AllowMultiple
Это свойство показывает, может ли атрибут применяться многократно к одному элементу. По умолчанию оно равно false, что значит – атрибут может использоваться только один раз. Рассмотрим следующий пример:
C#
// По умолчанию AllowMultiple = false.
public class MyAttribute : Attribute {}
[AttributeUsage(AllowMultiple = true)]
public class YourAttribute : Attribute {}
MC++
// По умолчанию AllowMultiple = false.
public gc class MyAttribute : public System::Attribute {}
[AttributeUsage(AllowMultiple = true)]
public gc class YourAttribute : public System::Attribute {}
используется несколько экземпляров атрибутов, MyAttribute заставляет компилятор выдать сообщение об ошибке. Следующий фрагмент кода иллюстрирует правильное использование атрибута YourAttribute и неправильное – MyAttribute:
C#
public class MyClass {
// Ошибка – дублирование не разрешено.
[MyAttribute, MyAttribute]
public void MyMethod {
//…
}
// Это допустимо.
[YourAttribute, YourAttribute] public void YourMethod {
//…
}
}
MC++
public gc class MyClass {
public:
// Ошибка – дублирование не разрешено.
[MyAttribute, MyAttribute] void MyMethod {
//…
}
// Это допустимо.
[YourAttribute, YourAttribute] void YourMethod {
//…
}
}
Visual Basic.NET
Public Class MyClass
' Ошибка – дублирование не разрешено.
Public Sub <MyAttribute, MyAttribute> MyMethod
'…
End Sub
' Это допустимо.
Public Sub <YourAttribute, YourAttribute> YourMethod
'…
End Sub
End Class
Если свойства AllowMultiple и Inherited установлены в true, класс может наследовать атрибут и иметь еще экземпляры, примененные непосредственно к нему. Если же свойство AllowMultiple равно false, значения атрибутов родительского класса будут переписаны значениями этого же атрибута класса-наследника.
Типы данных, допустимые в атрибутах
Атрибут может содержать поля следующих типов:
• Bool
• Byte
• Char
• Double
• Float
• Int
• Long
• Short
• String
• Object
• System.Type
Открытые перечислимые типы, вложенные (если вложены) в открытые типы
Попытка использовать в классе, реализующем атрибут другие типы, приводит к ошибкам компиляции.