Private-Bookers
Программирование на Visual C++. Архив рассылки
вернуться

Jenter Алекс

Шрифт:

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 {}

Visual Basic.NET

' По умолчанию AllowMultiple = false.

Public Class _

 <AttributeUsage(AttributeTargets.Method)> MyAttribute

 Inherits Attribute

End Class

Public Class _

 <AttributeUsage(AttributeTargets.Method, AllowMultiple := True)> YourAttribute

 Inherits Attribute

End Class

Если используется несколько экземпляров атрибутов, 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

Открытые перечислимые типы, вложенные (если вложены) в открытые типы

Попытка использовать в классе, реализующем атрибут другие типы, приводит к ошибкам компиляции.

Определение атрибутивного класса

Теперь можно приступить к определению самого класса. Это определение выглядит подобно определению обычного класса, что демонстрирует следующий пример:

C#

// Этот атрибут может применяться только к методам

public class MyAttribute : System.Attribute {

 // …

}

MC++

// Этот атрибут может применяться только к методам

public gc class MyAttribute : System.Attribute {

 // …

}

Visual Basic.NET

' Этот атрибут может применяться только к методам

Public Class <AttributeUsage(AttributeTargets.Method)> MyAttribute

 Inherits System.Attribute

 ' …

End Class

Этот пример показывает следующие положения:

• Атрибутивные классы должны объявляться как открытые

• По соглашению, имена классов должны заканчиваться словом Attribute. Хотя это и необязательно, рекомендуется поступать так для улучшения читаемости текста. При использовании атрибута это слово необязательно.

  • Читать дальше
  • 1
  • ...
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка