* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Установка и извлечение динамических свойств вручную
8 февраля 2009
Иногда требуется сделать динамическим свойство объекта, который не относится к элементам пользовательского интерфейса. Рассмотрим класс, экземпляр которого создается во время выполнения. При этом ряд свойств нового объекта требуется инициализировать значениями, зависящими от внешних факторов. В данном слу- чае необходимые значения можно задать через конфигурационный файл и динами- чески извлекать их во время выполнения при помощи класса AppSettingsReader. Класс Арр Settings Reader определен в пространстве имен System.Configuration и применяется для извлечения из конфигурационного файла значений с заданным ключом. Главный метод этого класса — GetValue. Он принимает как параметры строку ключа и тип извлекаемого объекта. Хотя тип извлекаемого объекта опреде- ляется вторым параметром, этот метод возвращает значение типа Object, поэтому его необходимо явно преобразовать в требуемый тип. Вот пример, демонстрирую- щий установку свойства Text гипотетического объекта Widget с помощью класса AppSettings Reader.
Visual Basic .NET ' Создать объект AppSettingsReader. Dim myReader As New System.Configuration.AppSettingsReader() 1 Создать объект Widget. Dim myWidget As New Widgetf) ' Извлечь значение динамического свойства с ключом DynamicWidget.Text и типом String и получить результат, преобразовав возвращенный Object ' в String при помощи функции СТуре. •nyWidget.Text - CType(myReader.GetValue("DynamicWidget.Text". GetTypefSystem.String)}, String) Visual C# // Создать объект AppSettingsReader. System.Configuration.AppSettingsReader myReader = new System. Configu ration. AppSettingsReaderf); // Создать объект Widget. Wirjget myWidget = new WidgetO; // Извлечь значение динамического свойства с ключом DynamicWidget.Text // и типом String и получить результат, преобразовав возвращенный Object // в String при помощи функции СТуре. myWidget.Text - myReader.GetValue("DynamicWidget.Text", typeof(System.String)).ToString(): При попытке чтения из конфигурационного файла значения с несуществующим ключом генерируется исключение Invalid Operation Exception. Чтобы извлечь данные из конфигурационного файла во время выполнения, не- обходимо добавить к нему все необходимые элементы во время выполнения. Эти элементы заключаются в тэг <appSettings> и состоят из тэга <add> с парой «ключ — значение*. Вот как добавить элемент значения в конфигурационный файл: <appSettings> <!-- Сюда помещают параметры приложения, определяемые пользователем.--> <!-- Вот пример: <add Кеу="ключ" уа1ие="значение_свойства"/> --> <add key="Widget.Visible" value="True" /> <add key-"Widget.Text" value-"! love my Widget!" /> </appSettings> ^ Как вручную извлечь данные из конфигурационного файла 1. Создайте экземпляр класса System. Configuration. AppSettings Reader. 2. Вызовите метод AppSetiingsReader.GelValue, чтобы извлечь значение с заданным ключом. 3. Преобразуйте объект, возвращаемый методом AppSettings Reader. Get Value, в тре- буемый тип. >• Как вручную записать данные в конфигурационный файл 1. Откройте конфигурационный файл приложения в Блокноте или другом тексто- вом редакторе. 2. Найдите тэг <appSettings>; если он отсутствует, определите его внутри элемента <configuration>. 3. Добавьте к <appSettings> элемент <add> с атрибутами ключа и значения, как по- казано ниже: <add key="Widget1.Text" value="My Widget"> 4. Сохраните и закройте конфигурационный файл.