ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: ironMan
16. августа 2011 03:14

В предыдущем примере синтаксис прикрепления атрибута к типу или члену похож на тот, что применяется при создании экземпляра класса. Дело в том, что атрибут на самом деле является классом, производным от базового класса System.Attribute. А теперь немного расширим атрибут RegistryKey:



public enum RegistryHives
{
HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE,
HKEY_YCURRENT С ON FIG
}

public class RegistryKeyAttribute : Attribute
{
public RegistryKeyAttribute(RegistryHives Hive, String ValueName)
{
this.Hive = Hive;
this.ValueName = ValueName;
}

protected RegistryHives hive;
public RegistryHives Hive
{
get
{
return hive;
}
set
{
hive = value;
}
}

protected String valueName;
public String ValueName
{
get
{
return valueName;
}
set
{
valueName = value;
}
}
}



В этом примере были добавлены enum для различных типов разделов реестра, конструктор для класса-атрибута (который принимает тип и имя раздела реестра), а также два свойства для имени улья реестра и имени значения. Теперь мы видим более широкие возможности атрибутов, так что посмотрим, как запросить атрибут в период выполнения. Мы будем работать с полностью функциональным примером. Перейдем к рассмотрению некоторых более сложных вопросов, связанных с определением и прикреплением атрибутов. В приведенных примерах к именам классов атрибутов добавлено слово Attribute. Однако, прикрепляя атрибут к типу или члену, можно отбросить этот суффикс. Это одна из возможностей сокращения, изысканная разработчиками С#, и дается она нам даром. Обнаружив атрибут, прикрепленный к типу или члену, компилятор будет искать класс с именем заданного атрибута, производный от System.Attribute. Если класс найти не удастся, компилятор добавит к имени заданного атрибута слово Attribute и будет продолжать поиск получившегося имени. Поэтому в повседневной практике имена классов атрибутов при определении оканчиваются словом Attribute. Впоследствии эта часть имени опускается.

( отрывок из книги В. В. Лабор "Си Шарп: Создание приложений для Windows" )

Похожие записи


Многопоточный HTTP сервер на C#
Оригинал статьи здесь: Многопоточный сервер на C# за 15 минут Автор (на хабре): ertaquo C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже...

Нейгел, Ивьен, Глинн, Уотсон, Скиннер - C# 2008 и платформа .NET 3.5
Название: C# 2008 и платформа .NET 3.5 для профессионалов Авторы: Нейгел, Ивьен, Глинн, Уотсон, Скиннер Издательство: Вильямс ISBN: 978-5-8459-1458-3 Год: 2008 Страниц: 1392 От издателя: Эта книга является совершенным руководством по языку C# 2008 и его среде. Она обновлена с учетом вышедших версий .NET 3.5 и Visual Studio 2008. Начиная с обзора и архитектуры ...

Виртуальные свойства в C#
Свойства, как и методы, могут быть перегружены в производных классах. Для свойств также могут задаваться модификаторы virtual, override или abstract. Подробно о наследовании говорилось в главе «Методы», сейчас я лишь хочу еще раз привести подробный пример использования механизма виртуализации с применением свойств: [code:c#] using System; enum COLORS { RE...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий