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

Тут можно читать онлайн Алекс Jenter - Программирование на Visual C++. Архив рассылки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на Visual C++. Архив рассылки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Программирование на Visual C++. Архив рассылки - описание и краткое содержание, автор Алекс Jenter, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на Visual C++. Архив рассылки - читать книгу онлайн бесплатно, автор Алекс Jenter
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

__property virtual Boolean get_Reviewed() { return reviewed; }

__property virtual void set_Reviewed(Boolean value) { reviewed = value; }

}

Visual Basic.NET

Public Class DeveloperAttribute

Inherits System.Attribute

' Закрытые поля.

Private name As String

Private level As String

Private reviewed As Boolean

' Конструктор принимает два обязательных параметра: имя и уровень.

Public Sub New(name As String, level As String)

Me.name = name

Me.level = level

Me.reviewed = False

End Sub

' Свойство Name.

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

Public Overridable ReadOnly Property Name() As String

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

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

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

Теперь настало время рассмотреть механизм получения атрибутов, ведь мало научиться сохранять свои атрибуты в метаданных, важно еще и уметь получать и использовать их. К счастью, получение пользовательского атрибута – простая задача. Сначала объявляется переменная с типом атрибута, который нужно получить, затем она инициализируется с помощью вызова метода 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 using namespace System;

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

public__gc class MainApp{

public:

static void GetAttribute(Type* t) {

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

DeveloperAttribute* MyAttribute =

__try_cast

(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);

}

}

};

void main() {

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

MainApp::GetAttribute(__typeof(MainApp));

}

Visual Basic.NET

Imports System

Class MainApp

Public Shared Sub Main()

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

GetAttribute(GetType(MainApp))

End Sub

Public Shared Sub GetAttribute(t As Type) ' Получить атрибут.

Dim MyAttribute As DeveloperAttribute = _

CType(Attribute.GetCustomAttribute(t, GetType(DeveloperAttribute)), DeveloperAttribute)

If MyAttribute Is Nothing Then Console.WriteLine("Атрибут не найден.")

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

Console.WriteLine("Имя: {0}.", MyAttribute.Name) ' Получить поле Уровень.

Console.WriteLine("Уровень: {0}.", MyAttribute.Level) ' Получить поле Проверено.

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

End If

End Sub

End Class

При запуске эта программа выдает на консоль следующие строки:

Имя: Иван Семенов

Уровень: 42

Проверено: True

Если атрибут не найден, метод GetCustomAttributeвозвращает нулевое значение. В этом примере предполагается, что атрибут определен в текущем пространстве имен, если это не так, не забудьте импортировать соответствующее пространство имен.

Получение списка однотипных атрибутов

В предыдущем примере ссылки на класс и атрибут передавались в метод GetCustomAttribute. Этот код прекрасно работает, если на уровне класса определен только один атрибут. Но если на том же уровне определено несколько однотипных атрибутов, этот метод вернет не всю информацию. В таких случаях нужно использовать метод Attribute.GetCustomAttributes, который возвращает массив атрибутов. Например, если на уровне класса определены два экземпляра атрибута DeveloperAttribute, можно модифицировать метод GetAttribute, чтобы получить оба.

Как это сделать, показано в следующем примере:

C#

public static void GetAttribute(Type t) {

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

DeveloperAttribute[] MyAttribute =

(DeveloperAttribute[]) Attribute.GetCustomAttributes(t, typeof(DeveloperAttribute));

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

else for (int i = 0; i < MyAttribute.Length; i++) {

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

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

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

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

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

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

}

}

MC++

public:

static void GetAttribute(Type* t) {

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

DeveloperAttribute* MyAttribute __gc[] =

__try_cast(Attribute::GetCustomAttributes(t, __typeof(DeveloperAttribute)));

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

else for (int i = 0; i < MyAttribute.Length; i++) {

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

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

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

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

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

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

}

}

Visual Basic.NET

Public Shared Sub GetAttribute(t As Type)

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

Dim MyAttribute As DeveloperAttribute() = _

CType(Attribute.GetCustomAttributes(t, GetType(DeveloperAttribute)), DeveloperAttribute())

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Алекс Jenter читать все книги автора по порядку

Алекс Jenter - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование на Visual C++. Архив рассылки, автор: Алекс Jenter. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x