Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 296

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 290 291 292 293 294 295 < 296 > 297 298 299 300 301 302 .. 404 >> Следующая


[assembly: AssemblyKeyFile ('Company.Public') 1 -

Этот атрибут хранится в метаданных модуля в виде инструкции, вызывающей конструктор атрибута AssembiyKeyFiieAttribute, которому в качестве параметра передается строка. В приведенном выше примере это строка 'Company.Public*. Еслн мы определяем нестандартный атрибут, то пользователи данного атрибута обычно записывают параметры в конструктор класса.

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

Атрибут TestcaseAttribute

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

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

Практикум: создание класса нестандартного атрибута

Полностью КОД данного примера МОЖНО найти В директории ChaptCr22/TestCaae. Для создания класса нестандартного атрибута, требуется выполнить следующие действия:

? Создать класс, производный ОТ System.Attribute

? Создать необходимые конструктор(ы) и общие свойства

? Включить в этот класс атрибут, который позволит определить,

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

Глава 22

1. Создание класса нестандартного атрибута

Этот шаг оказывается наиболее простым. Все что требуется для его выполнения — это создать класс, производный от класса System.Attribute:

public cle Ге :CaseAttribute ; Attribute )

2. Создание конструкторов и свойств

Как отмечалось выше, при использовании атрибута происходит вызов конструктора атрибута. В данном случае нужно определить тип объекта, используемого для проверки класса. Это будет System.туре: .

public class TestcaseAttribute : Attribute

<

. Ill <evanmary>

HI Констр ltop класса /// </suninary>

III <param naine=* test Case ">Объект, который содержит а себе

III ариант тестнровониж/рагаш»

public TestcaseAttribute (System.туре teetCaee)

{

TeetCaee = teetCaee;

)

III <aummary>

III Выполнение тестирования

III </sunmary>

punlic readonly System.Type teatCase)

III «summary»

/// Проверочн ; класс

III </»ипюдгу» public void Test О (

II Создание экземпляра тестируемого класса П Предполаг гт [, что созданный объект с данным вариантом // тестирования будет использоваться для тестирования //в конструкторе объекта

object 0 * Activator.Createlnstance (TestCase);

)

)

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

3. Включение атрибута в класс для его использования

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

[AttrributeUsage<AttributeTargets.Class,

AllowHultipie»false, lnberited=true)]
Атрибуты

\

633

public class TestcaseAttribute : Attribute (

/ / / <вшшплгу>

III Конструхтор класса

III <1 summary>

III <param name='tes tCase ">06beiiT, который содержит в себе

III вариант тестирования*:/par в№>

public TestcaseAttribute ( System.Type testCase )

{

TeetCaee = testCase;

)

III <summary>

III Проверочный класс

III </summary> -

public readonly SyetemType. TestCase:

III <summary>

III Выполнение тестирования

III </eummary> public void Test I )

{

11 Создание экземпляра тестируемого класса / / предполагается, что созданный объект с данным вариантом / / тестирования будет использоваться для тестирования

- II а конструхторе объекта

object о = Activator.Createlnstance (TestCase);

>

}

Атрибут Attrributeusage обладает единственным конструктором, которому передается значение перечислимого типа AttributeTargets (будет полностью описано d этом разделе ниже). В данном случае мы утверждаем, что единственным допустимым местом для размещения атрибута Testcaee является класс. В этом перечислимом типе можно задавать несколько различных значений с помощью ключевого слова or — т. е. допускается использовать другие атрибуты либо в классах, либо в конструкторах, либо в свойствах.
Предыдущая << 1 .. 290 291 292 293 294 295 < 296 > 297 298 299 300 301 302 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.