на начало
На главную страницу
Форум   

Статья :: Использование самостоятельно созданного атрибута


Использование самостоятельно созданного атрибута

Перед тем как обсудить реализацию собственного атрибута, рассмотрим, как используется атрибут InitialDirectory. Чтобы указать начальный каталог для класса, мы сделаем класс производным от базового класса DirectoryContext. Тогда мы сможем применить к такому классу атрибут InitialDirectory, который принимает параметр типа String*, определяющий путь к начальному каталогу. Свойство DirectoryPath извлекает путь из метаданных. Если к нашему классу не применен атрибут, этот путь примет значение по умолчанию. Ниже приведен код нашей тестовой программы.
Выполняя этот пример на произвольной системе, можно сменять каталог, указанный атрибутом, на один из существующих на этой конкретной машине.

//AttributeDemo.h
using namespace System;
// использование пространства имен Система;
using namespace System::10;
// использование пространства имен Система::10;
_gc class Normal : public DirectoryContext
Т"
};
[InitialDirectory("С:\\OI\\NetCpp\\Chap08")
] _gc class Special : public DirectoryContext // класс сборщика мусора
Специальный:DirectoryContext
{
};
public _gc class AttributeDemo
// класс сборщика мусора AttributeDemo
{
public:
static void Main() {
Normal *objNormal = new Normal;
Console::WriteLine(
"path = {0}",
objNormal->DirectoryPath);
// путь = ShowDirectoryContents(objNormal->DirectoryPath) ;
Special *objSpecial = new Special;
// новый Специальный Console::WriteLine(
"path = {0}",
objSpecial->DirectoryPath);
// путь = ShowDirectoryContents(objSpecial->DirectoryPath);
} private:
static void ShowDirectoryContents(String *path)
// Строка {
Directorylnfo *dir = new Directorylnfo(path);
// путь
Filelnfo *files[] = dir->GetFiles();
Console::WriteLine("Files:");
// Файлы:
lEnumerator *pEnum = files->GetEnumerator();
// файлы
while (pEnum->MoveNext())
{
Filelnfo *f =
dynamic_cast<File!nfo *>(pEnum->Current);
Console::WriteLine(" {0}", f->Name);
// Имя
}
Directorylnfo *dirs [] = dir->GetDirectories(
};
Console::WriteLine("Directories:");
// Каталоги: pEnum = dirs->GetEnumerator();
while (pEnum->MoveNext()
}
{
Directorylnfo *d =
dynamic_cast<Directory!nfo *>(pEnum->Current);
Console::WriteLine(" {0}", d->Name);
// Имя
}
}
};

Вот выдача:

path = c:\OI\NetCpp\Chap08\CustomAttribute // путь Files: // Файлы
CustomAttribute.vcproj
CustomAttribute.neb
ReadMe.txt
CustomAttribute.cpp
Assemblylnfо.cpp
stdafx.cpp
stdafx.h
CustomAttribute.sin
CustomAttribute.suo
AttributeDemo.h
DirectoryContext.h
DirectoryAttribute.h Directories: // Каталоги
Debug // Отладка path = C:\OI\NetCpp\Chap08 // путь Files: // Файлы Directories: // Каталоги
Reflection // Отражение
Dynamic // Динамический
Filel()
Serialization // Преобразование в последовательную форму
Hotel // Гостиница
ISerialization
Threading
PulseAll
Threadlsolation
AppDomain
Asynch
AsynchThreading
CustomAttribute
MarshalByReference
Remoting


Использование самостоятельно созданного атрибута

страницы в данном разделе 
Глава 8. Классы каркаса .NET Framework Классы каркаса .NET Framework
Метаданные и отражение Класс туре (Тип)
Динамическое связывание Ввод и вывод в .NЕТ
Потоковые классы Примитивные типы данных и потоки
TextReader И TextWriter Обработка файлов
Сериализация, или преобразование в последовательную форму Объекты сериализации
ISerializable Модель приложений .NET
Поток Изоляция потоков
Синхронизация коллекций Контекст
Заместители и заглушки ContextBoundObject
Изоляция приложений Прикладная область
Прикладные области и сборки Класс AppDomain (Прикладная область)
События AppDomain (Прикладная область) Пример AppDomain (Прикладная область)
Маршализация, прикладные области и контексты Асинхронное программирование
Асинхронные шаблоны проектирования lAsyncResult
Использование делегатов в асинхронном программировании Организация поточной обработки с параметрами
Удаленный доступ Краткий обзор удаленного доступа
Удаленные объекты Активация
Пример удаленного объекта Пример программы, реализующей удаленный доступ
Метаданные и удаленный доступ Конфигурационные файлы удаленного доступа
Программируемые атрибуты Использование самостоятельно созданного атрибута
Определение класса атрибута Определение базового класса
Сборка мусора Уничтожение объектов
Неуправляемые ресурсы и освобождение ранее выделенной области памяти Поколения
Завершение и раскручивание стека Управление сборкой мусора с помощью класса сборщика мусора GC
Программа-пример Резюме


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста