App.Config и Custom Configuration Sections / Хабр

Основные xml типы

Вы можете использовать базовые типы XML для создания новых параметров в настройках вашего шаблона. Это может быть переключатель, флажок или поле ввода.

ТипОписание
sectionОпределяет раздел для описания.
radioОпределяет радио-кнопку
checkboxОпределяет чекбокс.
selectОпределяет выпадающий список.
textОпределяет однострочный ввод текста.
textareaОпределяет многострочный ввод текста.

элементы

Элементы <field>
внутри элементов

Установить параметры вкладки меню.

элементы

Элементы <fields>
определяют вкладки меню и создают панели для их опций.

App.config и custom configuration sections

Данная статья может показаться банальной, но иногда что-то полезное забывается, а читать на импортном языке лень и книжки под рукой нет. Поэтому я, обратившись к гуглу, нашел хорошее описание процесса создания обработчика конфигурационной секции файла app.config в .net приложениях, перевел его, дополнил замечаниями (курсив) и комментариями и решил опубликовать.

Я уверен, что многие из вас использовали файл конфигурации App. Config для хранения данных инициализации или конфигурации приложения. И я также уверен, что многие из вас хотели создать в этом файле свои собственные структуры для хранения настроек. Но в итоге пришлось использовать встроенный функционал раздела и извлекать значения с помощью конструкции формы:


ConfigurationManager.AppSettings["MyKey"]

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

Итак, для загрузки нашей структуры данных из файла App. Config нам понадобятся следующие классы:

  1. ConfigurationSection: этот объект вернет настраиваемый раздел.
  2. ConfigurationElementCollection — на самом деле это набор элементов, которые мы определим в пользовательском разделе.
  3. ConfigurationElement — это сам элемент, описывающий определенный вами тип объекта.

Первое, что нам нужно сделать, это добавить файл app. Config в наше приложение (если вы еще этого не сделали, конечно). Затем откройте этот файл и скопируйте и вставьте следующий код между тегами:


<configSections>
<!-- 
name = Имя, которое используется для ссылки на данный раздел в файле настройки.
type = Обработчик раздела настроек. Включает две секции: полный путь - пространство имен обработчика наших данных   имя самого обработчика, наименование сборки, где данный класс располагается.
-->
    <section name="StartupFolders" type="ConfigSectionTester.StartupFoldersConfigSection, ConfigSectionTester"/>
</configSections>

Примечание: Этот раздел необходимо размещать в самом начале конфигурационного файла, т.е. сразу после тега, иначе будут ошибки инициализации конфигурации.

Далее создадим свой раздел, который будет реализовывать нашу собственную модель данных:


<StartupFolders>
    <Folders>
        <add folderType="A" path="c:foo" />
        <add folderType="B" path="C:foo1" />
    </Folders>
</StartupFolders>

Примечание. Если кому-то не нравится добавлять узлы с помощью команды add в этом примере, они всегда могут создать свой собственный префикс, используя следующий код:


[ConfigurationCollection( typeof( FolderElement ) ), AddItemName = "Folder"]
public class FoldersCollection : ConfigurationElementCollection
{

при определении коллекции элементов в структуре данных. Тогда в конфигурационном файле можно будет писать так:


<StartupFolders>
   <Folders>
     <Folder folderType="A" path="c:foo" />
     <Folder folderType="B" path="C:foo1" />
   </Folders>
 </StartupFolders>

Закончим изменения в конфигурационном файле и перейдем к организации взаимодействия нашего приложения с ним.

Во-первых, мы создадим класс, наследуемый от ConfigurationSection, который позволит нам взаимодействовать с нашим разделом в файле конфигурации через ConfigurationManager во время выполнения.


public class StartupFoldersConfigSection : ConfigurationSection
{
    [ConfigurationProperty( "Folders" )]
    public FoldersCollection FolderItems
   {
        get { return ( (FoldersCollection)( base[ "Folders" ] ) ); }
    }
}

Атрибут ConfigurationProperty(«Folders») необходим для сопоставления свойства FolderItems с корневым узлом нашей структуры данных.

Класс FoldersCollection наследуется от ConfigurationElementCollection, что обеспечивает взаимодействие с коллекцией наших элементов, описанных в app.config. Класс определяется так:


[ConfigurationCollection( typeof( FolderElement ) )]
public class FoldersCollection : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement()
    {
        return new FolderElement();
    }

    protected override object GetElementKey( ConfigurationElement element )
    {
        return ( (FolderElement)( element ) ).FolderType;
    }

    public FolderElement this[int idx ]
    {
        get{return (FolderElement) BaseGet(idx); }
    }
}

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


public class FolderElement : ConfigurationElement
{

    [ConfigurationProperty("folderType", DefaultValue="", IsKey=true, IsRequired=true)]
    public string FolderType
    {
        get {return ((string) (base["folderType"]));}
        set{base["folderType"] = value; }
    }

    [ConfigurationProperty( "path", DefaultValue = "", IsKey = false, IsRequired = false )]
    public string Path
    {
        get{return ( (string)( base[ "path" ] ) ); }
        set{base[ "path" ] = value; }
    }
}

Атрибут ConfigurationProperty(«folderType») требуется, чтобы связать имя атрибута xml в файле конфигурации. Другие настройки атрибутов, такие как DefaultValue=»», IsKey=true, IsRequired=true, только задают различные параметры, применимые к свойствам.

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


Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
StartupFoldersConfigSection section = (StartupFoldersConfigSection)cfg.Section["StartupFolders"];
if ( section != null )
{
    System.Diagnostics.Debug.WriteLine( section.FolderItems[0].FolderType );
    System.Diagnostics.Debug.WriteLine( section.FolderItems[0].Path );
    section.FolderItems[0].Path = "C:Nanook";
    cfg.Save(); //устанавливает перенос на новую строку и производит проверку <exename>.vshost.exe.config файла в вашей отладочной папке.
}

Итак, мы имеем все необходимые данные и классы, которые предоставляют нам возможность хранить в конфигурационном файле app.config пользовательскую структуру данных.
Использовать данный подход можно так:


StartupFoldersConfigSection section = (StartupFoldersConfigSection)ConfigurationManager.GetSection( "StartupFolders" );

if ( section != null )
{
System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].FolderType );
System.Diagnostics.Debug.WriteLine( section.FolderItems[ 0 ].Path );
}

При этом не забудьте добавить System. Configuration в список подключаемых пространств имен.

Автор: Дерик Уиттакер

Config.json

Файл
config.xml
определяет настройки, доступные для шаблона. Если кто-нибуь сохраняет настройки шаблона, они будут занесены в файл
config.json
. С каждым последующим сохранением настроек, файл перезаписывается.

Шаблоны Warp обеспечивают также
файлы config.default.json
, где хранятся настройки шаблона по умолчанию. Это дает возможность Вам восстановить настройки до исходных в случае каких-либо проблем и сделать копию вашего
config.json
при обновлении.
Совет: Используйте
— он поможет Вам перевести минимализированный код в читаемую разметку.

Добавить новый пункт меню

Элемент

может добавить новый пункт меню в настройки шаблона. Значение аттрибута
name
будет отображено, как имя пункта.

Добавление новых опций

Добавьте элемент, чтобы создать новую возможность

в настройки,
внутрь того элемента <fields>
, в который вы хотите добавить опцию.Вы можете также скопировать один из существующих кодов, а затем изменить его.

Настройки android config.xml

KeepRunning (логическое значение, по умолчанию true): решите, разрешаете ли вы продолжать работу приложения после перерыва, установите значение false, приложение не будет уничтожено, когда приложение примет перерыв, просто приостановите выполнение кода.

LoadUrlTimeoutValue (число в миллисекундах, по умолчанию 20000, 20 секунд): используется для установки времени ожидания загрузки страницы. По умолчанию 20 секунд.

SplashScreen (строка, заставка по умолчанию): используется для установки имени заставки при запуске, которая находится в каталоге res/drawable. Настройте ресурсы с тем же именем в соответствующих подкаталогах.

SplashScreenDelay (число в миллисекундах, по умолчанию 3000): время отображения заставки.

InAppBrowserStorageEnabled (логическое значение, по умолчанию — true): определяет, разрешен ли веб-странице, открытой в InAppBrowser, доступ к одним и тем же ресурсам localStorage и webSQL.

LoadingDialog (строка, по умолчанию null): задает окно, которое будет отображаться при первой загрузке страницы. Окно отображает указанный заголовок и сообщение.

LoadingPageDialog (строка, по умолчанию null) — то же, что и LoadingDialog, но будет отображаться при первой загрузке каждой страницы.

ErrorUrl (URL, по умолчанию null): в случае возникновения проблемы отображает страницу с заголовком Ошибка приложения.

ShowTitle (логическое значение, по умолчанию false): отображает заголовок в верхней части экрана.

LogLevel (строка, по умолчанию ERROR): установите уровень журнала, диапазон значений — [ERROR, WARN, INFO, DEBUG и VERBOSE].

SetFullscreen (логическое значение, по умолчанию false): этот атрибут устарел и будет удален в будущем. AndroidLaunchMode (строка, по умолчанию singleTop): установите для режима запуска активности тот же режим, что и в AndroidManifest.xml; см. Руководство по разработке Android для более подробной информации. Необязательные значения [standard, singleTop, singleTask, singleInstance].

Настройки ios config.xml

EnableViewportScale (логическое значение, по умолчанию false) Если установлено значение true, оно используется для проверки правильности метатега окна просмотра.

MediaPlaybackAllowsAirPlay (логическое значение, по умолчанию — true): следует ли блокировать функцию трансляции.

Общие параметры

Этот параметр используется для указания, будет ли приложение скрывать строку состояния. Строка состояния не скрыта в iOS, но это влияет на точную высоту строки состояния. По умолчанию установлено значение false.

Объекты конфигурации

Переменные из файла
config.xml
хранятся в объектах конфигурации. Чтобы получить доступ к значениям переменных, просто используйте метод GET.

Поддержка многоплатформенных настроек параметров

Установите, запрещать ли скольжение по диапазону, в это время в области переполнения будет отображаться черный фон. Если для ios установлено значение true, перетаскивание страницы активирует функцию масштабирования.

Основной цвет фона.

Скрывает строку состояния, прикрепленную к клавиатуре, когда она отображается.

Экран блокировки отображается в альбомной или портретной ориентации.

Добавьте плагин для конкретной платформы. Он будет добавлен автоматически при использовании команды добавления плагина Cordova.

Задайте свойства индивидуально для конкретной платформы.

Установите крюк, подробности см. в разделе «Крюк».

Роль config.xml

Config.xml используется для управления поведением определенных приложений. Этот независимый от платформы файл XML основан на стандарте описания упакованных веб-приложений (виджетов) W3C, который расширяет некоторые основные функции Cordova API, плагинов и некоторых параметров платформы.

Когда проект создается с помощью командной строки Cordova, в его корневом каталоге будет файл config.xml. Когда указанная мобильная платформа добавляется с помощью команды добавления платформы, в соответствующих подкаталогах платформы в каталоге платформ будет копия файла config.xml.

app/platforms/ios/AppName/config.xml 
app/platforms/blackberry10/www/config.xml
app/platforms/android/res/xml/config.xml

Специальные xml типы

Существуют также специфичные типы, доступные в Warp7 
layoutsverifystylescompileinfo

Гаджет:  11 полезных гаджетов с AliExpress для дома, смартфона, планшета и вашего питомца
Оцените статью
GadgetManiac
Добавить комментарий