Кратко съдържание



страница52/73
Дата21.07.2018
Размер8.57 Mb.
1   ...   48   49   50   51   52   53   54   55   ...   73

Как се съхраняват атрибутите?


Вече знаем, че атрибутите са инстанции на някакъв клас, наследник на System.Attribute. Те се съхраняват като метаданни в асемблито и могат да бъдат извличани по време на изпълнение на програмата. Сега ще разгледаме как точно се съхраняват.

Какво се случва по време на компилация?


По време на компилация приложените към дадена цел атрибути се обра­ботват по следния начин:

  1. Компилаторът намира типа, който съответства на приложения атрибут. В нашия пример с добавянето на коментари към кода на атрибута Comment съответства класа CommentAttribute.

  2. Компилаторът създава инстанция на приложения атрибут. В нашия пример се инстанцира класът CommentAttribute (който е дефиниран в нашия сорс код и е компилиран преди това).

  3. Компилаторът инициализира полетата на приложения атрибут чрез параметрите, подадени в конструктора му и чрез установяване на свойствата, за които е зададена стойност. В нашия случай полето mCommentText се инициализира от конструктора на CommentAttribute с подадената за него стойност.

  4. Инстанцията на атрибута, която е получена, се сериализира (пред­ставя се като последователност от байтове).

  5. Сериализираната инстанция се записва в таблицата с метаданните за целта, към която е приложена.

Какво се случва при извличане на атрибут?


По време на изпълнение, когато са необходими, атрибутите се десериали­зират от метаданните на асемблито и се предоставят на приложението. За тях се създават най-обикновени обекти от съответните им класове и състоянието им се извлича от метаданните.

Повече за сериализацията и десериализацията ще научим в темата за сериализация в .NET Framework, но за момента можем да считаме, че чрез тези техники можем да запазваме обекти от паметта във файл или друг носител и да ги възстановяваме след време обратно в паметта.


Упражнения


  1. Обяснете какво представляват атрибутите в .NET Framework. Как се прилагат атрибути? Как се прилагат атрибути с параметри? Как се задава цел при прилагане на атрибут?

  2. Дефинирайте собствен атрибутен тип VersionAttribute, който може да се прилага само към типове или методи и служи за задаване на версията на даден тип или метод. Версията трябва да се състои от символен низ за самата версия и незадължителен текстов коментар. Дефинирайте подходящи конструктори и свойства за класа.

  3. Създайте клас VersionsDemo с няколко метода и им приложете атри­бута VersionAttribute с някакви примерни версии, на места придру­жени от коментари.

  4. Създайте малка програма, която зарежда класа VersionsDemo и отпечатва неговата версия, както и версията на всеки негов метод заедно с текстовия коментар към нея (ако има такъв). За целта изпол­звайте методите GetMethods() и GetCustomAttributes() на класа System.Type.

Използвана литература


  1. Светлин Наков, Атрибути – http://www.nakov.com/dotnet/lectures/ Lecture-6-Attributes-v1.0.ppt

  2. Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press, 2002, ISBN 0735614229

  3. MSDN Training, Programming with the Microsoft® .NET Framework (MOC 2349B), Module 17: Attributes

  4. MSDN Library – http://msdn.microsoft.com



Национална академия по разработка на софтуер

Лекторите

» Светлин Наков е автор на десетки технически публи­ка­ции и ня­колко книги, свър­­зани с раз­работката на соф­ту­ер, заради което е тър­сен лектор и кон­султант.

Той е разработчик с дъл­гого­дишен опит, работил по раз­нообразни проекти, реали­зи­рани с раз­лични техноло­гии (.NET, Java, Oracle, PKI и др.) и преподавател по съвре­мен­ни софтуерни технологии в СУ "Св. Климент Охридски".

През 2004 г. е носител на награ­дата "Джон Атанасов" на прези­дента на България Ге­орги Пър­ва­нов.

Светлин Наков ръководи обу­чението по Java технологии в Академията.


» Мартин Кулов е софтуерен инженер и консул­тант с дългогодишен опит в изграждането на решения с платформите на Microsoft.

Мартин е опитен инструктор и сертифициран от Майкрософт разработчик по програмите MCSD, MCSD.NET, MCPD и MVP и меж­дународен лектор в световна­та организа­ция на .NET потре­бителски­те групи INETA.

Мартин Кулов ръководи обу­чението по .NET технологии в Академията.


Академията

» Национална академия по раз­ра­ботка на софтуер (НАРС) е център за професионално обу­чение на соф­ту­ерни специалисти.


» НАРС провежда БЕЗПЛАТНО кур­сове по разработка на софтуер и съв­ременни софтуерни тех­нологии в Со­фия и други градове.
» Предлагани специалности:

  • Въведение в програмирането (с езиците C# и Java)

  • Core .NET Developer

  • Core Java Developer

» Качествено обу­чение с много практически про­екти и индивиду­ално внимание за всеки.


» Гарантирана работа! Трудов до­говор при постъпване в Академията.
» БЕЗПЛАТНО!

Учите безплатно във въведителните курсове и по стипендии от работода­телите в следващите нива.



http://academy.devbg.org

Глава 8. Масиви и колекции

Необходими знания


  • Базови познания по структури от данни

  • Базови познания за общата система от типове в .NET (Common Type System)

  • Базови познания за езика C#
1   ...   48   49   50   51   52   53   54   55   ...   73


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница