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


Авторские права

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

Здесь можно скачать бесплатно "Алекс Jenter - Программирование на Visual C++. Архив рассылки" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Рейтинг:
Название:
Программирование на Visual C++. Архив рассылки
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

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

Описание и краткое содержание "Программирование на Visual C++. Архив рассылки" читать бесплатно онлайн.



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






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<DeveloperAttribute* __gc[]>(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())

 If MyAttribute Is Nothing Then

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

 Else

  Dim i As Integer

  For i = 0 To MyAttribute.Length – 1 ' Получить поле Имя.

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

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

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

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

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

  Next i

 End If

End Sub

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

Методы GetCustomAttribute и GetCustomAttributes не могут искать атрибут во всем классе и возвращать все его экземпляры. Они просматривают только один метод или поле за раз. Поэтому, если есть класс с одним атрибутом для всех методов и нужно получить все экземпляры этого атрибута, не остается ничего делать, как передавать эти методы один за другим в качестве параметров GetCustomAttribute и GetCustomAttributes.

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

C#

using System;

using System.Reflection;

public static void GetAttribute(Type t) {

 // Получить атрибут уровня класса.

 DeveloperAttribute att =

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

 if (att == null)

  Console.WriteLine("Класс {0} не имеет атрибута Developer.\n", t.ToString());

 else {

  Console.WriteLine("Атрибут Имя на уровне класса: {0}.", att.Name);

  Console.WriteLine("Атрибут Уровень на уровне класса: {0}.", att.Level);

  Console.WriteLine("Атрибут Проверено на уровне класса: {0}.\n", att.Reviewed);

 }

 // Получить атрибуты уровня методов.

 // Получить все методы данного класса и поместить их

 // в массив объектов System.Reflection.MemberInfo.

 MemberInfo[] MyMemberInfo = t.GetMethods();

 // Вывести атрибуты всех методов класса

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

  att =

   (DeveloperAttribute)Attribute.GetCustomAttribute(MyMemberInfo[i], typeof (DeveloperAttribute));

  if (att == null)

   Console.WriteLine("Метод {0} не имеет атрибута Developer.\n" ,

    MyMemberInfo[i].ToString());

  else {

  Console.WriteLine("Атрибут Имя на уровне метода {0}: {1}.", MyMemberInfo[i].ToString(), att.Name);

   Console.WriteLine("Атрибут Уровень на уровне метода {0}: {1}.", MyMemberInfo[i].ToString(), att.Level);

   Console.WriteLine("Атрибут Проверено на уровне метода {0}: {1}.\n", MyMemberInfo[i].ToString(), att.Reviewed);

  }

 }

}

MC++

using namespace System;

using namespace System::Reflection;


public:

 static void GetAttribute(Type* t) {

 // Получить атрибут уровня класса.

 DeveloperAttribute* att = __try_cast<DeveloperAttribute*>(Attribute::GetCustomAttribute(t, __typeof(DeveloperAttribute)));

 if (att == 0)

  Console::WriteLine(S"Класс {0} не имеет атрибута Developer.\n", t->ToString());

 else {

  Console::WriteLine(S"Атрибут Имя на уровне класса: {0}.", att->Name);

  Console::WriteLine(S"Атрибут Уровень на уровне класса: {0}.", att->Level);

  Console::WriteLine(S"Атрибут Проверено на уровне класса: {0}.\n", att->Reviewed);

 }

 // Получить атрибуты уровня методов.

 // Получить все методы данного класса и поместить их

 // в массив объектов System.Reflection.MemberInfo.

 MemberInfo* MyMemberInfo __gc[] = t->GetMethods();

 // Вывести атрибуты всех методов класса

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

  att =

  __try_cast<DeveloperAttribute*>(Attribute::GetCustomAttribute(MyMemberInfo[i], __typeof(DeveloperAttribute)));

  if (att == 0)

   Console::WriteLine(S"Метод {0} не имеет атрибута Developer.\n" , MyMemberInfo[i]->ToString());

   else {

    Console::WriteLine(S"Атрибут Имя на уровне метода {0}: {1}.", MyMemberInfo[i]->ToString(), att->Name);

    Console::WriteLine(S"Атрибут Уровень на уровне метода {0}: {1}.", MyMemberInfo[i]->ToString(), att->Level);

    Console::WriteLine(S"Атрибут Проверено на уровне метода {0}: {1}.\n", MyMemberInfo[i]->ToString(), att->Reviewed);

  }

 }

}

Visual Basic.NET

Imports System

Imports System.Reflection

Public Shared Sub GetAttribute(t As Type)

 ' Получить атрибут уровня класса.

 Dim att As DeveloperAttribute = _

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

 If att Is Nothing Then

  Console.WriteLine("Класс {0} не имеет атрибута Developer.", t.ToString())

 Else

  Console.WriteLine("Атрибут Имя на уровне класса: {0}.", att.Name)

  Console.WriteLine("Атрибут Уровень на уровне класса: {0}.", att.Level)

  Console.WriteLine("Атрибут Проверено на уровне класса: {0}.", att.Reviewed)

 End If

 ' Получить атрибуты уровня методов.

 ' Получить все методы данного класса и поместить их

 ' в массив объектов

 System.Reflection.MemberInfo.

 Dim MyMemberInfo As MemberInfo() = t.GetMethods()

 ' Вывести атрибуты всех методов класса

 Dim i As Integer

 For i = 0 To MyMemberInfo.Length – 1

  att =

   CType(Attribute.GetCustomAttribute(MyMemberInfo(i), GetType(DeveloperAttribute)), DeveloperAttribute)

  If att Is Nothing Then

   Console.WriteLine("Метод {0} не имеет атрибута Developer.", MyMemberInfo(i).ToString())

  Else

   Console.WriteLine("Атрибут Имя на уровне метода {0}: {1}.", MyMemberInfo(i).ToString(), att.Name)

   Console.WriteLine("Атрибут Уровень на уровне метода {0}: {1}.", MyMemberInfo(i).ToString(), att.Level)

   Console.WriteLine("Атрибут Проверено на уровне метода {0}: {1}.", MyMemberInfo(i).ToString(), att.Reviewed)

  End If

 Next i

End Sub

Для доступа к методам и полям проверяемого класса используются методы класса System::Type. В этом примере сначала через Type запрашивается информация об атрибутах, определенных на уровне класса, затем, через метод Type.GetMethods получается информация обо всех атрибутах, определенных на уровне методов. Эта информация помещается в массив объектов типа System.Reflection.MemberInfo. Если нужны атрибуты свойств, используется метод Type.GetProperties, а для конструкторов – Type.GetConstructors. Класс Type имеет множество методов для доступа к элементам типа, здесь описана только очень небольшая часть.

Пример

Демонстрационная программа, показывающая, как можно получать информацию из секций метаданных, написана на C#. На рисунке показана закладка, на которой можно увидеть значения атрибутов для сборки, на других закладках показывается аналогичная информация. Я не буду подробно описывать пример, кому надо, может скачать и скомпилировать его. Пример достаточно прост и разобраться в том, как получаются атрибуты, ни для кого не составит труда.

Заключение

Как видите, система метаданных в среде .NET достаточно хорошо продумана, и пользоваться ей легко и удобно.


Это все на сегодня. Пока!

Алекс Jenter [email protected] Duisburg, 2001. Публикуемые в рассылке материалы принадлежат сайту RSDN.

На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "Программирование на Visual C++. Архив рассылки" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Алекс Jenter

Алекс Jenter - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

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

А что Вы думаете о книге? Оставьте Ваш отзыв.