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

С# - Ватсон К.

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


foreach { string arg in args )

(

if ( assemblyNaine == null ) assemblyName = arg ; else

aasemblyName = string,Format [ '(0) (1)' , assemblyNanie , arg

Затем производится попытка загрузить модуль и извлечь все описанные в этом модуле нестандартные атрибуты:

Assembly а ~ Assembly . LoadFrom (assemblyName) ;

// Теперь осуществляется поиск атрибутов модуля В данном случае // параметр игнорируется, поэтому он произвольно задается ках true object(] attributes = a,GecCustomAttributes(true) ?

Все атрибуты, которые удается обнаружить, выводятся на консоль. Теперь можно построить выполняемый файл в Visual Sludio.NET или воспользоваться компилятором командной строки:

CSC FindAttribute3.cs

швшпв

-Ю< х|

- \F it II* t L* ? hu l U f i)l tlrt 11- У' 4 jj I it & i in А л t. n г i 1д* t «и . И м и ftfriKRliJy .1U: С Г в. Ijis Ufa =: fdi‘ * f 1 л. I; L |h ibuL a . и jtfft4 -

[J yl t g n. fl I a [j on с t ic::. Do Tj. 19 у..i h tc U11; i • i. hu r n

U: \F indftt t i*ibutu? >„

EE

J



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

Для того чтобы запустить приложение FindAttributes, необходимо задать имя проверяемого модуля. С этой целью здесь можно использовать сам модуль FindAttributes.ехе (см. рис. справа).

Хотя атрибут DebuggabieAttribute не был задан, он был включен в модуль коч пилятором С#. Это обязательно происходит, еслн выполняемый файл компилируется в отладочном режиме, хотя на момент написания данной книги все выполняемые файлы имеют этот атрибут.

Можно внести d программу изменения, добавив в нее произвольное количество атрибутов модуля. Попробуйте, например, внести в код примера такие изменения:

using System;

using System.Reflection;

[esaembly: AssemblyTitle("Wro* racks')] *

public class FindAttributes

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

Позже мы вернемся к отражению, чтобы продемонстрировать, как можно извлекать атрибуты классов и методов, описанных внутри модуля,

I

I

I

. едтмчп.эдетэз^спи и-кс

t?;М' inejfllС.i¦ ih11l-i¦. :¦ J in11.it11¦ 11¦ 111 i¦ Г in rt;it 11' iWi fc Из -;я ila ?e nh ly * t11> i bt it ч,- z f qy " L in 1L11L riJjutl' . ими 1 ...

S!/Cn.Adf Iect io n. A;; r. l-п I h iy T i 11 и Л г i HluiLu ?##?*«., Гн) Л'Л10 -i f- i с J - hi LSjfj Me At tf i Sju fc s

U s S F: i n dli t i. j'i i m t e и > _

llli Hi — МИ1ИШМ1
620 ___________Глава 22

Встроенные атрибуты

.NET Framework включает в модуль несколько атрибутов, например среди них: DebuggabloAttribute И AssemblyTitleAttribute. В настоящем разделе МЫ обсудим некоторые нз наиболее часто употребляемых атрибутов, описанных в .NET Framework, н ситуации, когда у вас может возникнуть желание использовать их.

В данном разделе будут рассматриваться следующие атрибуты:

? System.Diagnostics.CondicionalActribute

? System.ObsoleteAttribute

? System.SerializableAttribute

? System.Reflection.AssemblyDelaySignAttribute

За более подробной информацией об атрибутах, которые поставляются совместно с .NET, следует обратиться к MSDN, либо инсталлировав ее одновременно с инсталляцией .NET, либо воспользовавшись версией, работающей в режиме онлайн по адресу h1tp://msdn.microsofl.com.

Другим чрезвычайно полезным инструментом при работе с .NET, является программа ‘Reflector’, которую можно переписать с hltp://www.aisto.com/roeder/dotneb'. В ней для проверки содержимого модуля используются отражения. Она позволяет найти все классы, производные от класса System.Attribute, с помощью нескольких щелчков мышью. Это тот инструмент, без которого вы не сможете обойтись.

Атрибут System.Diagnostics.ConditionalAttribute

Это один из наиболее полезных атрибутов, поскольку он позволяет добавлять и исключать участки кода в зависимости от значения флажка, определяемого на этапе компиляции. Рассматриваемый здесь атрибут содержится в пространстве имен Syatem. Diagnostics, в которое включены классы, предназначенные для отладки и трассировочного вывода, регистрации событий, счетчики скорости выполнения и информация о процессе. В следующей программе приводится пример использования этого атрибута:

using System;

using Syatem.Diagnostic»;

class TestConditionel

( -static void Main(string!] args)

{

It Создание нового объекта TestConditional TestConditionel tc = new TestConditional ( ) ;

П Вызов метода, который доступен, только если определена // переменная DEBUG... tc.DebugOnly { ) ;

}

// Class constructor (Класс 'Конструктор* public TcutConditional (I

<

>

И Этот метод зависит от значения атрибута и будет аклвчен П я выходной код только в тон случае, если при компиляции
Атрибуты

621

11 программы был определен флажок DEBUG [Coodle Ional < *ПВВ№ ) ]

public void DebuflOnly <)

{

// Эта строка будет выводиться только в случае построения // отладочных версий...
Предыдущая << 1 .. 284 285 286 287 288 289 < 290 > 291 292 293 294 295 296 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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