Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Пространство имен System.Configuration
Пространство имен System.Configuration
До этого времени все файлы *.config, показанные в этой главе, состояли из известных XML-элементов, по которым среда CLR выясняла адреса внешних компоновочных блоков. Вдобавок кэтим элементам файл конфигурации клиента может содержать и специальные данные приложения, не имеющие никакого отношения к установке связей. С учетом сказанного становится ясно, почему в .NET Framework используется пространство имен, которое позволяет считывать данные файла конфигурации клиента программными средствами.
Пространство имен Sуstem.Configuration определяет небольшой набор типов, которые можно использовать для чтения пользовательских установок из файла *.config клиента. Эти пользовательские установки должны задаваться в контексте элемента <appSettings>. Элемент <appSettings> может содержать произвольное числа элементов <add>, определяющих пары ключей и значений, которые могут извлекаться программными средствами.
Предположим, что у нас есть файл *.сonfig дата консольного приложения AppConfigReaderApp, в котором определяется строка связи с базой данных и указатель на данные timesToSayHello.
<configuration>
<appSettings>
<add key="AppConStr" value="server=localhost;uid='sa';pwd='';database=Cars" />
<add key="timeToSayHello" value="8" />
</appSettings>
</сonfiguration>
Чтение этих значений для использования приложением клиента осуществляется простым вызовом метода экземпляра GetValue() типа System.Configuration. AppSettingsReader. Как показывает следующий пример программного кода, первый параметр: GetValue() задает имя ключа в файле *.config, а второй параметр представляет соответствующий тип ключа (получаемый в C# в результате применении операции typeof).
class Program {
static void Main(string[] args) {
// Создание средства чтения и получение строки соединения.
AppSettingsReader ar = new AppSettingsReader();
Console.WriteLine(ar.GetValue("appConstr", typeof(string)));
// Получение числа повторений приветствия и выполнение.
int numbOfTimes = (int)ar.GetValue("timesToSayHello", typeof(int));
for (int i = 0; i ‹ numbOfTimes; i++) Console.WriteLine("Йо!");
Console.ReadLine();
}
}
Тип класса AppSettingsReader не задает способа записи специальных данных приложения в файл *.config. На первый взгляд это может показаться ограничением, но на самом деле это вполне логично. Сама идея создания файла *.config заключается в том, чтобы он содержал доступные только для чтения данные, которые должны помочь среде CLR (а также типу AppSettingsReader) правильно установить приложение на соответствующей машине.
Замечание. В ходе нашего обсуждения ADO.NET (см. главу 22) вы узнаете об элементе конфигурации ‹connectionStrings› и о других типах пространства имен System.Configuration. Эти элементы, появившиеся в .NET 2.0, предлагают стандартный метод обработки строк соединений.
Исходный код. Проект AppConfigReaderApp размещен в подкаталоге, соответствующем главе 11.
- Роль компоновочных блоков .NET
- Формат компоновочного блока .NET
- Создание и использование одномодульных компоновочных блоков
- Создание и использование многомодульных компоновочных блоков
- Приватные компоновочные блоки
- Общедоступные компоновочные блоки
- Использование общедоступных компоновочных блоков
- Конфигурация общедоступных компоновочных блоков
- Анализ внутренней структуры GAC
- Файлы политики публикации компоновочных блоков
- Элемент ‹codeBase›
- Пространство имен System.Configuration
- Файл конфигурации машины
- Общая схема связей компоновочных блоков
- Резюме
- Ширина и глубина ассортимента
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Имена индексов ограничений
- Пример применения метода «пять почему»
- Имена объектов длиной 68 символов
- Ценовая сегментация ассортимента
- 5.12.2 Открытие поименованного канала
- Сохранение рабочей книги с именем, представляющим собой текущую дату
- System tools used for debugging
- Configuration options
- Integrated Secure Communications System
- Правила именования файлов