- •Атрибуты в среде .Net и языке c#.
- •Метаданные
- •Понятие атрибутов
- •Предопределенные и собственные атрибуты
- •Потребители атрибутов
- •Применение атрибутов
- •Сокращенное именование атрибутов
- •Создание собственных атрибутов:
- •Применение собственных атрибутов:
- •Ограничение использования атрибутов:
- •Атрибуты уровня сборки и модуля:
- •Рефлексия атрибутов:
- •Выводы:
- •Язык xml. Классы платформы .Net для работы с xml-данными.
- •Синтаксис xml
- •Работа с xml при помощи System.Xml
- •Работа с xml при помощи linq to xml
- •Выводы:
- •Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io
- •Классы Directory (DirectoryInfo) и File (FileInfo) Некоторые общие свойства классов DirectoryInfo и FileInfo:
- •Дополнительные возможности класса DirectoryInfo
- •Дополнительные возможности класса FileInfo
- •Дополнительные члены File
- •Потоковый ввод-вывод
- •Работа с классом FileStream
- •Работа с классами StreamWriter и StreamReader
- •Классы StringWriter и StringReader
- •Работа с классами BinaryWriter и BinaryReader
- •Выводы:
- •Сериализация. Атрибуты. Стандартные форматы сериализации. Понятие сериализации объектов
- •Роль графов объектов
- •Конфигурирование объектов для сериализации
- •Общедоступные поля, приватные поля и общедоступные свойства
- •Стандартные форматеры сериализации
- •Настройка сериализации с использованием атрибутов
- •Выводы:
- •Понятие бд и субд. Язык sql. Ado.Net как средство доступа из c# к субд. Понятие бд
- •Понятие субд
- •Обзор синтаксиса
- •Подключенный уровень
- •Автономный уровень
- •Основные свойства класса DataSet
- •Основные методы класса DataSet
- •Типы DataColumn и DataRow
- •Основные члены типа DataColumn:
- •Основные члены типа DataRow:
- •Работа с адаптерами данных:
- •Основные члены класса DbDataAdapter:
- •Параллельные вычисления. Многозадачность и многопоточность.
- •Некоторые члены класс Process:
- •Некоторые члены класса ProcessThread
- •Домены приложений
- •Некоторые члены класс AppDomain:
- •Многопоточность. Классификация состояний потока. Средства многопоточного программирования System.Threading.
- •Некоторые члены пространства имен System.Threading
- •Основные члены класс Thread
- •Состояния потока
- •Многопоточное программирование при помощи асинхронных вызовов делегатов
- •Создание вторичных потоков при помощи Thread.Start()
- •Синхронизация с помощью lock
- •Синхронизация с использованием типа System.Threading.Monitor
- •Синхронизация с использованием типа System.Threading.Interlocked
- •Синхронизация с использованием атрибута [Synchronization]
- •Использование System.Threading.Timer
- •Пул потоков clr
- •Библиотека Windows.Forms. Пространства имен. Структура приложения. Элементы управления. События. Иерархия элементов управления.
- •Основные пространства имен Windows Forms
- •Структура приложения WinForms
- •Элементы управления
- •События
- •Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation
- •Типы приложений wpf
- •Основные сборки wpf
- •Построение приложения wpf без xaml
- •Построение приложения wpf с использованием только xaml
- •Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
- •Создание проекта
- •Знакомство с инструментами визуального конструктора wpf
Атрибуты в среде .Net и языке c#.
Атрибуты в .NET тесно связаны с понятием рефлексии.
Рефлексия — встроенный в среду .NET механизм, позволяющий во время выполнения получать информацию о наличествующих в сборках метаданных.
Метаданные
Помимо исполняемого кода, в сборке .NET содержатся исчерпывающие и точные метаданные, которые описывают каждый определенный в двоичном файле тип (например, класс, структуру или перечисление), а также всех его членов (например, свойства, методы или события). За генерацию метаданных по типам отвечает компилятор. Из-за того, что метаданные .NET являются настолько детальными, сборки представляют собой полностью самоописываемые (self-describing) сущности.
Для описания типов используется класс System.Type. Способы получения описания типа:
метод System.Object.GetType(). Требует наличия созданного экземпляра типа:
Point p = new Point();
Type t = p.GetType();
операция typeof(). Не требует наличия созданного экземпляра, однако тип должен быть известен при компиляции:
Type t = typeof(Point);
статический метод System.Type.GetType(). Наиболее гибкий. Знать сам тип, из которого извлекаются метаданные, на этапе компиляции не требуется, необходимо указать имя:
Type t = System.Type.GetType(“GeomLib.Ellipse”)
Имея описатель типа, можно получить доступ к его характеристикам, методам, свойствам при помощи свойств/методов класса System.Type, например: IsAbstract, IsArray, IsClass, IsEnum, GetConstructors(), GetEvents(), GetFields(), Getlnterfaces(), GetMembers(), GetMethods() и др.
Понятие атрибутов
Помимо стандартных метаданных, которые помещаются в любую сборку, программисты в .NET могут включать в состав сборки дополнительные метаданные с использованием атрибутов. В сущности, атрибуты представляют собой не более чем просто аннотации, которые могут добавляться в код и применяться к какому-то конкретному типу (классу, интерфейсу, структуре и т.д.), члену (свойству, методу и т.д.), сборке или модулю.
Предопределенные и собственные атрибуты
В .NET доступно множество предопределенных атрибутов, которые полезно применять в своих приложениях. Обработка этих атрибутов уже реализована.
Примеры предопределенных атрибутов:
[Obsolete] |
Указывает, что данный тип/член является устаревшим. При использовании элемента с этим атрибутом, будет выведено предупреждение компилятора |
[Dlllmport] |
Позволяет обращаться к не-managed библиотекам, в том числе к функциям WinAPI, расположенным в системных DLL. |
[Serializable] |
Позволяет указать, что класс или структура является "сериализируемой", т.е. способна сохранять свое текущее состояние в потоке |
[NonSerialized] |
Позволяет указать, что данное поле в классе или структуре не должно сохраняться в процессе сериализации |
[WebMethod] |
Позволяет указать, что метод может вызываться посредством HTTP-запросов, и CLR-среда должна преобразовывать его возвращаемое значение в формат XML |
Также можно создавать собственные атрибуты и тем самым дополнительно уточнять поведение своих типов. Атрибуты представляют собой типы классов, унаследованных от абстрактного базового класса System.Attribute. Для создания собственного атрибута, нужно реализовать новый тип, наследующий от System.Attribute.