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

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: ironMan
16. августа 2011 04:11

Чтобы запросить тип или член о прикрепленных к ним атрибутах, нужно применить отражение (reflection).

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



using System;
using System.Reflection;

public enum RegistryHives
{
HKEYCLASSES_ROOT,
HKEYCURRENT_USER,
HKEYLOCAL_MACHINE,
HKEY_USERS,
HKEYCURRENT__CONFIG
}

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 = vslue;
}
}
}

class ТеstClass
{
[RegistryKey(RegistryHives.HKEYCURRENT_U5ER, "Foo")
public int Foo;
public int Bar;
}

class FieldAttrApp
{
public static void Main()
{
Type type = Type.GetType("TestClass");
foreach(Fieldlnfo field in type.GetFields())
{
foreach (Attribute attr in field.GetCustomAttributes(true))
{
RegistryKeyAttribute registryKeyAttr = attr as RegistryKeyAttribute;
if( null != registryKeyAttr )
{
Console.WriteLine("{0} будет сохранен в {1}\\\\{2}",
field.Name, registryKeyAttr.Hive, registryKeyAttr.VaiueName
);
}
}
}
}
}



Результат работы программы:

Foo будет сохранен в HKEYCURRENT_USER\\Foo

Этот пример в чем-то дублирует предыдущий. Однако пара деталей все же важна для нас. Как и объект Methodlnfo, определенный для получения информации о методе из объекта типа, объект Fieldlnfo предоставляет аналогичную функциональность для получения из объекта сведений о поле. Как и в предыдущем примере, мы начнем с получения объекта типа, ассоциированного с нашим тестовым классом. Затем мы циклически обработаем массив Fieldlnfo, а также все атрибуты каждого объекта Fieldlnfo, пока не найдем нужный — RegistryKeyAttribute. Если мы его обнаружим, то выведем имя поля и значения полей атрибута Hive и ValueName.


Постовой: Интернет магазин ламп

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


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Запрос информации об атрибутах класса в C#
Чтобы запросить тип или член о прикрепленных к ним атрибутах, нужно применить отражение (reflection).Способ получения атрибута зависит от типа члена, к которому производится запрос. Допустим, вам нужно узнать атрибут, определяющий удаленный сервер, на котором должен быть создан объект. Без атрибутов вам бы пришлось сохранять эту информацию в константе или файле ресурс...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

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




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


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