Программирование на Visual C++. Архив рассылки
Шрифт:
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
' Ошибка – дублирование не разрешено.
Поделиться с друзьями: