Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NET framework / dotNet_3_РасширенныеВозможности.pptx
Скачиваний:
29
Добавлен:
10.12.2017
Размер:
93.68 Кб
Скачать

.NET Framework

Расширенные возможности .NET и C#

Лектор: Андрей Михайлович Степанов

1

Пространства имён

Пространство имён – часть имени класса перед последним словом (части отделяются точкой). Используется для организации иерархии, устранения конфликтов в названиях.

namespace Goofy { namespace Utils {

public class String {

}

}

}

System.String s1; Goofy.Utils.String s2;

В CIL полное имя класс всегда идёт с сборкой:

IL_0001: newobj instance void [MyLibrary.Utils]Goofy.Utils.String::.ctor()

2

Делегаты

Делегат – безопасный аналог указателя на функцию; вызов делегата приводит к вызову всех функций, перечисленных в нём.

delegate int MyDelegate ( int b ); private static int Func1 ( int x )

{ return x * 2; }

private static int Func2 ( int x ) { return x * 3; }

MyDelegate del1 = Func1;

MyDelegate del2 = (MyDelegate)Func1 + (MyDelegate)Func2; int r = del1 ( 5 );

int g = del2 ( 5 );

3

События

Событие – стандартизованная пара функций для чтения/записи делегата.

delegate void EventHandler ( object sender, EventArgs e ); // Делегат

event EventHandler Click; // Объявление

ok.Click += OkClicked; // Подпись на событие

if ( Click!= null )

Click( this, null ); // Вызов события в кнопке

4

Интерфейсы

Интерфейс определяет «контракт» (набор методов, свойств, событий) без их реализации.

interface IDraggable {

void MoveTo ( int x, int y );

}

if ( o is IDraggable ) {

(o as IDraggable).MoveTo ( x, y ); ((IDraggable)o).MoveTo ( x, y );

}

5

Сборки

Сборка – хранилище IL-кода и символьной информации (метаданных). Это позволяет подключать сборку к программе без дополнительных файлов с описанием типов. Обычно сборка в Windows – один файл .dll или .exe.

Данные сборки: манифест (используемые сборки, атрибуты, версия, цифровая подпись, системные флаги и настройки), метаданные типов, IL-код.

6

Пример манифеста сборки

.assembly extern mscorlib {

 

.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )

// .z\V.4..

.ver 4:0:0:0

 

}

 

.assembly extern System {

 

.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )

// .z\V.4..

.ver 4:0:0:0

 

}

 

.assembly extern System.Windows.Forms {

 

.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )

// .z\V.4..

.ver 4:0:0:0

 

}

 

.assembly ConsoleApplication2 {

 

.custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 13 43 6F 6E 73 6F 6C 65 41 70 70 6C 69 63 } // ...ConsoleApplic

…..

.hash algorithm 0x00008004

.ver 1:0:0:0

}

.module ConsoleApplication2.exe

.imagebase 0x00400000

.file alignment 0x00000200

.stackreserve 0x00100000

.subsystem 0x0003

// WINDOWS_CUI

.corflags 0x00000003

// ILONLY 32BITREQUIRED

7

Отражение (рефлексия)

Отражение – механизм получения информации о типах и создании типов во время исполнения. Позволяет: загрузить сборку динамически, найти все типы в ней, создать нужный тип, запросить атрибуты и т.д.

Type tp = obj.GetType ( );

object res = tp.InvokeMember ( “SomeMethod”, BindingFlags.Public | BindingFlags.Instance, null, obj );

8

Атрибуты

Атрибут – пользовательский модификатор типа, члена типа (метода, свойства…), сборки. Не влияет напрямую на поведение кода, но может быть прочитан во время выполнения программы.

class Employee {

public int ID { get; set; }

[Required] // ==RequiredAttribute public string Name { get; set; }

}

9

Исключения

Исключение – прерывание выполнения программы с распространением его вверх по стеку вызова вплоть до нахождения обработчика прерывания или завершения программы.

try {

long.Parse ( "a" );

}

catch ( Exception e ) { throw e;

throw; }

10

Соседние файлы в папке NET framework