Чтение онлайн

ЖАНРЫ

Программирование на Visual C++. Архив рассылки

Jenter Алекс

Шрифт:

C#

// По умолчанию Inherited = true.

public class MyAttribute : Attribute {}

// Явно задается false.

[AttributeUsage(Inherited = false)]

public class YourAttribute : Attribute {}

MC++

// По умолчанию Inherited = true.

public gc class MyAttribute : public System::Attribute {}

// Явно задается false.

[AttributeUsage(Inherited = false)]

public gc class YourAttribute : public System::Attribute {}

Visual Basic.NET

'
По умолчанию Inherited := true.

Public Class _

 <AttributeUsage(AttributeTargets.All, Inherited := True)> MyAttribute

 Inherits Attribute

End Class

Public Class _

 <AttributeUsage(AttributeTargets.All, Inherited := False)> YourAttribute

 Inherits Attribute

End Class

Вышеописанные атрибуты затем применяются к методу класса MyClass:

C#

public class MyClass {

 // В C# несколько атрибутов могут определяться в разных блоках,

 // ограниченных скобками или в одном блоке – через запятую.

 // Порядок следования атрибутов неважен.

 [MyAttribute][YourAttribute]

 public void MyMethod {

//…

 }

}

MC++

public gc class MyClass {

public:

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

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

 ' Ошибка – дублирование не разрешено.

Поделиться с друзьями: