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

Jenter Алекс

Шрифт:

Get

Return name

End Get

 End Property

 ' Свойство Level.

 ' Только для чтения.

 Public Overridable ReadOnly Property Level As String

Get

Return level

End Get

 End Property

 ' Свойство Reviewed.

 ' Чтение / Запись.

 Public Overridable Property Reviewed As Boolean

Get

Return reviewed

End Get

Set

reviewed = value

End Set

 End Property

End Class

Применять этот атрибут можно, используя как полное имя DeveloperAttribute, так и сокращенное – Developer:

C#

[Developer("Иван Семенов", "1")]

[Developer("Иван Семенов", "1", Reviewed = true)]

MC++

[Developer(S"Иван Семенов", S"1")]

[Developer(S"Иван Семенов", S"1", Reviewed = true)]

Visual Basic.NET

<Developer("Иван Семенов", "1")>

<Developer("Иван Семенов", "1", Reviewed := True)>

В первом примере показано применение атрибута с одним обязательным параметром, а во втором – с обоими типами параметров.

Доступ к информации, хранящейся в атрибутах

Теперь настало время рассмотреть механизм получения атрибутов, ведь мало научиться сохранять свои атрибуты в метаданных, важно еще и уметь получать и использовать их. К счастью, получение пользовательского атрибута – простая задача. Сначала объявляется переменная с типом атрибута, который нужно получить, затем она инициализируется с помощью вызова метода Attribute.GetCustomAttribute. Все, теперь можно использовать любые доступные свойства атрибута.

Получение одиночного атрибута

В следующем примере атрибут DeveloperAttribute (рассмотренный выше) применяется к классу MainApp в целом. Метод GetAttribute использует Attribyte.GetCustomAttribute для получения состояния атрибута DeveloperAttribute перед тем, как вывести информацию на консоль.

C#

using System;

[Developer("Иван Семенов", "42", Reviewed = true)]

class MainApp {

 public static void Main {

// Вызвать функцию получения и отображения атрибута.

GetAttribute(typeof(MainApp));

 }

 public static void GetAttribute(Type t) {

// Получить атрибут.

DeveloperAttribute MyAttribute =

(DeveloperAttribute)Attribute.GetCustomAttribute(t, typeof(DeveloperAttribute));

if (MyAttribute == null) {

Console.WriteLine("Атрибут не найден.");

} else {

// Получить поле Имя.

Console.WriteLine("Имя: {0}." , MyAttribute.Name);

// Получить поле Уровень.

Console.WriteLine("Уровень: {0}." , MyAttribute.Level);

// Получить поле Проверено.

Console.WriteLine("Проверено: {0}." , MyAttribute.Reviewed);

}

 }

}

MC++

#using <mscorlib.dll> using namespace System;

[Developer(S"Иван Семенов", S"42", Reviewed = true)]

public__gc class MainApp{

public:

 static void GetAttribute(Type* t) {

// Получить атрибут.

DeveloperAttribute* MyAttribute =

__try_cast<DeveloperAttribute*>

(Attribute::GetCustomAttribute(t, __typeof(DeveloperAttribute)));

if (MyAttribute == 0)

Console::WriteLine(S"Атрибут не найден.");

else {

// Получить поле Имя.

Console::WriteLine(S"Имя: {0}." , MyAttribute->Name);

// Получить поле Уровень.

Console::WriteLine(S"Уровень: {0}." , MyAttribute->Level);

// Получить поле Проверено.

Console::WriteLine(S"Проверено: {0}." , MyAttribute->Reviewed);

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

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

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

  • Моя полка