Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рефлексия атрибутов с использованием раннего связывания





Ограничение использования атрибутов

Создание специальных атрибутов

Первым шагом в процессе создания специального атрибута является создание нового класса, унаследованного от System.Attribute. В описании атрибута (DescriptionAttribute ) поддерживается фрагмент строковых данных, предусматривающий возможность манипуляций над ним с помощью автоматического свойства (Description). Помимо того факта, что данный класс наследуется от System.Attribute, ничего особенного в нем больше нет.

По умолчанию действие специальных атрибутов может распространяться на практически любой аспект кода (методы, классы, свойства и т.д.). Следовательно, если бы потребовалось, можно было бы использовать VehicleDescription (помимо прочего) и для уточнения описания методов, свойств или полей. В одних случаях подобное поведение оказывается именно тем, что нужно, но в других, однако, может потребоваться создать вместо этого специальный атрибут, действие которого бы распространялось только на избранные элементы кода. Чтобы ограничить область действия специального атрибута, необходимо применить к его определению атрибут [AttributeUsage].

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

Для применения раннего связывания определение интересующего атрибута (в данном случае VehicleDescriptionAttribute) должно присутствовать в клиентском приложении уже на этапе компиляции. С учетом того, что специальный атрибут определен в сборке At tribute dCarLibrary как общедоступный класс, использование раннего связывания будет наилучшим вариантом.

Создание расширяемого приложения

В первую очередь необходимо создать сборку с типами, которые должна обязательно использовать каждая оснастка, чтобы иметь возможность подключаться к расширяемому приложению Windows Forms. Для этого создадим проект типа Class Library (Библиотека классов), назовем его CommonSnappableTypes.

namespace CommonSnappableTypes

{

public interface IAppFunctionality

{

void Dolt () ;

}

[AttributeUsage(AttributeTargets.Class) ]

public sealed class CompanylnfoAttribute : System.Attribute

{

public string CompanyName { get; set; }

public string CompanyUrl { get; set; }

}

Далее потребуется создать тип, реализующий интерфейс IAppFunctionality. Чтобы не усложнять пример создания расширяемого приложения, давайте сделаем этот тип простым. Создадим новый проект типа Class Library на С# по имени CSharpSnapln и определим в нем тип класса по имени CSharpModule. При этом нужно не забыть добавить ссылку на сборку CommonSnappableTypes, чтобы этот класс мог использовать определенные в ней типы (а также на сборку System. Windows . Forms . dll для того, чтобы он мог отображать осмысленное сообщение). Ниже показан необходимый код.



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using CommonSnappableTypes;

using System.Windows.Forms;

namespace CSharpSnapln

{

[Companylnfo(CompanyName = "My Company", CompanyUrl = "www.MyCompany.com")]

public class CSharpModule : IAppFunctionality

{

void IAppFunctionality.Dolt()

{

MessageBox. Show ("You have just used the C# snap in!");

}

}

}

Обратите внимание, что для обеспечения поддержки интерфейса IAppFunctionality был выбран вариант его реализации явным образом. Применять именно такой вариант вовсе не необязательно; главное понимать, что единственной частью системы, которая нуждается в непосредственном взаимодействии с данным типом интерфейса, является обслуживающее приложение Windows. Благодаря явной реализации этого интерфейса, метод Dolt () не становится доступным прямо из типа CSharpModule.

 





Дата добавления: 2014-01-03; Просмотров: 308; Нарушение авторских прав?


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

Читайте также:

  1. M служит для связывания субъекта заключения S и предиката заключения P и отсутствует в самом заключении.
  2. Активный центр белков и избирательность связывания его с лигандом
  3. Анализ прибыли и рентабельности с использованием международных стандартов
  4. Аналитические счетаслужат для детальной характеристики синтетических счетов. Бухгалтерский учет с использованием аналитических счетов называется аналитическим.
  5. Атомарность значений атрибутов, первая нормальная форма отношения
  6. Вопрос 19. Контроль за использованием и охраной земель.
  7. Воспитание и образование в период раннего Средневековья
  8. Воспитание собственно силовых способностей с использованием непредельных отягощений.
  9. Воспитание собственно силовых способностей с использованием околопредельных и предельных отягощений.
  10. Государственное управление использованием и охраной земель
  11. Графический метод с использованием характеристик для мгновенных значений
  12. Графический метод с использованием характеристик по первым гармоникам

studopedia.su - Студопедия (2013 - 2020) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление
Генерация страницы за: 0.002 сек.