Переключает app.config в возможном времени выполнения?

Вы можете добавить имя к своему StackLayout, которое будет упоминаться в вашем коде позади.

<ScrollView>
        <StackLayout x:Name="mainLayout" Padding="20, 20, 20, 20">
            <local:TimeSheetAccordion HeaderText="Customer #1" BackgroundColor="#FAFAFA" Padding="20, 20, 20, 20" />
            <local:TimeSheetAccordion HeaderText="Customer #2" BackgroundColor="#FAFAFA" Padding="20, 20, 20, 20" />

            <StackLayout Margin="0, 30, 0, 0" Orientation="Horizontal" HorizontalOptions="End">
                <Button Text="Reset" BorderRadius="6" />
                <Button Text="Submit Time Sheet" BackgroundColor="Blue" TextColor="White" BorderRadius="6" />
        </StackLayout>
    </StackLayout>
</ScrollView>

После этого в вашем Page.xaml.cs

mainLayout.Children.Add(new TimeSheetAccordion());
8
задан Community 23 May 2017 в 12:29
поделиться

5 ответов

Оказывается, что я могу подкачать .config файл для нового и сделать ConfigurationManager. RefreshSection (...) для каждого раздела. Это обновит из нового .config файла.

10
ответ дан 5 December 2019 в 10:05
поделиться

Microsoft.NET app.config не разработан для Вашего сценария, а также многих других. Я часто встречаюсь с подобной потребностью, таким образом, я потратил большое усилие, разработав решение.

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

  2. Выберите альтернативное местоположение для реальных данных конфигурации: файл, база данных, возможно, даже веб-сервис. Я предпочитаю базу данных большую часть времени, таким образом, я составляю таблицу конфигурации с простой структурой, которая позволяет мне хранить свои данные.

  3. Реализуйте простую библиотеку для обертывания доступа конфигурации так, чтобы у Вас был простой API для остальной части Вашего приложения (через внедрение зависимости). Скройте использование app.config а также Ваше реальное место (места) хранения конфигурации. Так как.NET со строгим контролем типов, сделайте параметры конфигурации, таким образом - преобразовывают каждую строку, полученную в доступный больше-всего-определенный-тип (URL, Int32, FileInfo, и т.д.).

  4. Определите, какие параметры конфигурации могут быть безопасно изменены во времени выполнения по сравнению с теми, которые не могут. Как правило, некоторые настройки должны измениться вместе с другими, или просто не имеет никакого смысла позволять им изменяться вообще. Если все Ваши данные конфигурации могут безопасно измениться во времени выполнения, то это делает вещи легкими, но я ВЫСОКО сомневаюсь относительно такого сценария. Скройте изменяемость и взаимозависимости параметров конфигурации по мере возможности.

  5. Разработайте ответ на недоступность Ваших реальных данных конфигурации. Я предпочитаю рассматривать отсутствие любого параметра конфигурации как фатальная ошибка, которая прерывает приложение, если я не могу определить применимое значение по умолчанию. Аналогично, я прерываюсь в отсутствие контейнера устройства хранения данных конфигурации (файл, таблица базы данных, и т.д.).

Наслаждайтесь, и с наилучшими пожеланиями.

5
ответ дан 5 December 2019 в 10:05
поделиться

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

Так или иначе возможно, это - просто я не имеющий достаточно информации о Вашем сценарии, но этот вид подозрительных чувств.

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

0
ответ дан 5 December 2019 в 10:05
поделиться

Посмотрите на события, доступные Вам на классе ApplicationSettingsBase. Существует PropertyChanged & SettingChanging, которая может дать Вам, в чем Вы нуждаетесь.

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

0
ответ дан 5 December 2019 в 10:05
поделиться

Могут Вы для перезапуска приложения, когда Вы обнаруживаете, что необходимо переключить файлы? Если так, это - просто вопрос переключения файлов и перезапуска. Теперь, хитрый бит - то, если.NET сохраняет app.config файл открытым, в то время как программа работает. Я подозреваю, что это не делает, но если, наиболее очевидно, приближаются к сбоям, я предлагаю, чтобы у Вас было второе приложение (cfgswitcher.exe), который ожидает процесса с PID, указанным на командной строке для завершения, затем переключает файлы конфигурации и повторно запускает исходный процесс. Затем Ваше приложение должно было бы просто запустить cfgswitcher.exe (передающий в его собственном PID как параметр командной строки) и оконечный.

Как я говорю, хотя, стоит попробовать более очевидный подход сначала.

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

2
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: