Програмиране за NET Framework. Отражение на типовете (Reflection) презентация

Содержание


Презентации» Информатика» Програмиране за NET Framework. Отражение на типовете (Reflection)
Необходими знания
 Базови познания за .NET Framework и Common Language RuntimeСъдържание
 Какво е Global Assembly Cache?
 Какво е Reflection?
 Зареждане наКакво е Global Assembly Cache?
 Global Assembly Cache (GAC) е централноДемонстрация #1
 Преглед на GAG през Windows Explorer и през AdministrativeКакво е Reflection?
 Отражението на типовете (reflection) е възможността да получавамеЗареждане на асемблита
 Зареждане чрез System.Reflection. Asembly.Load(…)
 Приема като параметър:
 иметоЗареждане на асемблита
 Зареждане чрез System.Reflection. Asembly.LoadFrom(…)
 Приема като параметър пътяИзвличане информация за асембли
 Свойства на System.Reflection. Assembly за извличане информацияИзвличане информация за асембли
 Свойства на System.Reflection. Assembly за извличане информацияИзвличане информация за асембли
 Свойства на System.Reflection. Assembly за извличане информацияИзвличане информация за асембли
 Свойства на System.Reflection. Assembly за извличане информацияДемонстрация #2
 Зареждане на асемблитаПремахване на асемблита от паметта
 Не се подържа възможността да сеИзучаване на типовете в асембли
 System.Type – отправна точка за извършванеИзучаване на типовете в асембли
 Sytem.Type дефинира множество от свойства иИзучаване членовете на типДемонстрация #3
 Изследване на типовете в асемблиКласове за видовете членове
 За всеки вид членове има съответен клас,Извличане на методи и параметрите им
 Type.GetMethod() – връща отражението наДинамично извикване на метод от асембли (Late Binding)
 Създаваме инстанция наДинамично извикване на методДинамично извикване на методДемонстрация #4
 Зареждане на тип от асембли и извикване на методиКакво е Reflection Emit?
 Reflection.Emit 
 Създаване на цели асемблита 
Използване на Reflection Emit
 Пространството System.Reflection. Emit предоставя набор от класовеИзползване на Reflection Emit
 Чрез класа System.Reflection.Emit. ILGenerator се генерират MSILДинамично генериране на асемблиДинамично генериране на асемблиДемонстрация #5
 Динамично създаване на асемблиУпражнения
 Какво е Global Assembly Cache? За какво служи?
 Опишете понеУпражнения
 Съставете Windows Forms приложение, което зарежда асембли, името на коетоУпражнения
 Съставете програма, която прочита въведена текстова последователност и създава асемблиИзползвана литература
 Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press,



Слайды и текст этой презентации
Слайд 1
Описание слайда:


Слайд 2
Описание слайда:

Слайд 3
Описание слайда:
Необходими знания Базови познания за .NET Framework и Common Language Runtime (CLR) Базови познания за езика C# Базови познания за MSIL

Слайд 4
Описание слайда:
Съдържание Какво е Global Assembly Cache? Какво е Reflection? Зареждане на асемблита Извличане информация за асембли Премахване на асемблита от паметта Изучаване членовете на тип Извличане на методи и параметрите им Извличане на параметрите на метод Динамично извикване на методи Reflection Emit

Слайд 5
Описание слайда:
Какво е Global Assembly Cache? Global Assembly Cache (GAC) е централно хранилище за споделени асемблита Асемблитата в GAC са достъпни за ползване от всички .NET приложения на машината Асемблитата в GAC имат силно име, което ги идентифицира уникално Не добавяйте асемблита в GAC освен, ако не е абсолютно необходимо

Слайд 6
Описание слайда:
Демонстрация #1 Преглед на GAG през Windows Explorer и през Administrative Tools

Слайд 7
Описание слайда:
Какво е Reflection? Отражението на типовете (reflection) е възможността да получаваме информация за типовете по време на изпълнение на програмата С Reflection .NET приложенията могат: да изучават метаданните на асемблита да изучават типовете в дадено асембли динамично да извикват методи динамично да създават нови асемблита, да ги изпълняват и да ги запазват като файл

Слайд 8
Описание слайда:
Зареждане на асемблита Зареждане чрез System.Reflection. Asembly.Load(…) Приема като параметър: името на асемблито обект от тип AssemblyName – описва асемблито Търси асембли със зададеното описание (probing) и ако го намери го зарежда Ако асемблито не бъде намерено предизвиква FileNotFoundException

Слайд 9
Описание слайда:
Зареждане на асемблита Зареждане чрез System.Reflection. Asembly.LoadFrom(…) Приема като параметър пътя до асемблито Прочита подадения файл Извиква вътрешно Load(…) По-бавно от Load(…) Ако асемблито не бъде намерено се хвърля FileNotFoundException

Слайд 10
Описание слайда:
Извличане информация за асембли Свойства на System.Reflection. Assembly за извличане информация за асембли FullName пълното име на асемблито, включващо версия, култура и ключ (Public Key Token) Location EntryPoint GlobalAssemblyCache

Слайд 11
Описание слайда:
Извличане информация за асембли Свойства на System.Reflection. Assembly за извличане информация за асембли FullName Location пътят, от където е заредено асемблито EntryPoint GlobalAssemblyCache

Слайд 12
Описание слайда:
Извличане информация за асембли Свойства на System.Reflection. Assembly за извличане информация за асембли FullName Location EntryPoint методът, от който ще започне изпълнението на асемблито GlobalAssemblyCache

Слайд 13
Описание слайда:
Извличане информация за асембли Свойства на System.Reflection. Assembly за извличане информация за асембли FullName Location EntryPoint GlobalAssemblyCache булева стойност, която показва дали асемблито е било заредено от GAC

Слайд 14
Описание слайда:
Демонстрация #2 Зареждане на асемблита

Слайд 15
Описание слайда:
Премахване на асемблита от паметта Не се подържа възможността да се премахне едно асембли Възможно е премахването на всички асемблита в даден домейн Не се препоръчва да се използва поради голямата опасност от грешки

Слайд 16
Описание слайда:
Изучаване на типовете в асембли System.Type – отправна точка за извършване на манипулации с типове и обекти Чрез System.Type можем да получим всички членове на даден тип: полета методи свойства събития вложени типове Чрез Assembly.GetTypes() извличаме типовете от дадено асембли

Слайд 17
Описание слайда:
Изучаване на типовете в асембли Sytem.Type дефинира множество от свойства и методи за изучаване информацията за даден тип: Свойства: Методи:

Слайд 18
Описание слайда:
Изучаване членовете на тип

Слайд 19
Описание слайда:
Демонстрация #3 Изследване на типовете в асембли

Слайд 20
Описание слайда:
Класове за видовете членове За всеки вид членове има съответен клас, който ги описва:

Слайд 21
Описание слайда:
Извличане на методи и параметрите им Type.GetMethod() – връща отражението на даден метод (MethodInfo) MethodInfo.GetParameters() – извлича параметрите на даден метод

Слайд 22
Описание слайда:
Динамично извикване на метод от асембли (Late Binding) Създаваме инстанция на типа, чрез някой от статичните методи на класа Activator: CreateInstance(…) – създава инстанция на посочения тип CreateInstanceFrom(…) – инстанцира определен тип от дадено асембли CreateComInstanceFrom(…) – създава инстанция на COM обект Динамично извикаме методите на типа чрез System.MethodInfo.Invoke(…)

Слайд 23
Описание слайда:
Динамично извикване на метод

Слайд 24
Описание слайда:
Динамично извикване на метод

Слайд 25
Описание слайда:
Демонстрация #4 Зареждане на тип от асембли и извикване на методи

Слайд 26
Описание слайда:
Какво е Reflection Emit? Reflection.Emit Създаване на цели асемблита Запазване на асемблита на диска Изпълнение на асемблита Изпълнение и запазване на асемблита Reflection.Emit ни позволява да създадем асемблита от нулата Модули Типове Конструктори Методи Събития Свойства

Слайд 27
Описание слайда:
Използване на Reflection Emit Пространството System.Reflection. Emit предоставя набор от класове за създаване на части от асемблита: Асемблита – AssemblyBuilder Модули – ModuleBuilder Типове – TypeBuilder Конструктори – ConstructorBuilder Методи – MethodBuilder Свойства – PropertyBuilder Събития – EventBuilder

Слайд 28
Описание слайда:
Използване на Reflection Emit Чрез класа System.Reflection.Emit. ILGenerator се генерират MSIL инструкции Представляват MSIL изпълним код Могат да се добавят в даден метод Emit(…) – добавяме в поток последователност от MSIL инструкции EmitWriteLine(…) – добавя инструкциите за отпечатване на низ Създаване на изпълними асемблита : AssemblyBuilder.SetEntryPoint(…)

Слайд 29
Описание слайда:
Динамично генериране на асембли

Слайд 30
Описание слайда:
Динамично генериране на асембли

Слайд 31
Описание слайда:
Демонстрация #5 Динамично създаване на асембли

Слайд 32
Описание слайда:

Слайд 33
Описание слайда:
Упражнения Какво е Global Assembly Cache? За какво служи? Опишете поне един начин за преглеждане на асемблитата от Global Assembly Cache. Да се реализира Windows Forms приложение, което позволява да се зарежда избрано от потребителя асембли и показва информация за него (път от където е заредено, дали е заредено от GAC, входната му точка и т.н.) . Да се реализира конзолно приложение, което зарежда асемблито mscorlib.dll и отпечатва имената на всички типове в него. Да се реализира конзолно приложение, което зарежда асемблито mscorlib.dll и намира всички методи на типа System.DateTime, който е дефиниран в него.

Слайд 34
Описание слайда:
Упражнения Съставете Windows Forms приложение, което зарежда асембли, името на което се избира от потребителя и извлича от него имената и параметрите на конструкторите на всички типове, дефинирани в него. Дефинирайте интерфейс ICalculatable, който дефинира метод double Calculate(int[]). Напишете конзолно приложение, което чете от текстов файл редица от числа, намира всички асемблита от зададена директория, в които има имплементация на ICalculatable и чрез всяко от тях извършва пресмятането Calculate(…) и отпечатва резултата. Тествайте като създадете две асемблита, в които има тип, имплементиращ ICalculatable. Едното асембли трябва да изчислява средно аритметично, а другото сума на елементите от подадения масив.

Слайд 35
Описание слайда:
Упражнения Съставете програма, която прочита въведена текстова последователност и създава асембли съдържащо тип, който съдържа метод отпечатващ тази текстова последователност. Генерираното асембли трябва да бъде съхранено, като изпълним файл.

Слайд 36
Описание слайда:
Използвана литература Jeffrey Richter, Applied Microsoft .NET Framework Programming, Microsoft Press, 2002, ISBN 0735614229 Jesse Liberty, Programming C#, 3rd Edition, O'Reilly, 2003, ISBN 0596004893 Professional C#, 3rd, Wrox Press, 2004, ISBN 0764557599 Георги Иванов, Отражение на типовете (Reflection) – http://www.nakov.com/dotnet/2003/ lectures/Reflection.doc MSDN Library – http://msdn.microsoft.com


Скачать презентацию на тему Програмиране за NET Framework. Отражение на типовете (Reflection) можно ниже:

Похожие презентации