Конфигурация приложения .NET MAUI. Конфигурация в памяти

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

Общие сведения о конфигурация приложения .NET MAUI

Конфигурация приложения позволяет отделить какие-либо данные приложения от кода, что позволяет менять эти самые данные без перестроения приложения. Например, вам может потребоваться хранить ключ API для доступа к какому-либо онлайн-сервису. Так как ключ может изменяться (и довольно часто), то имеет смысл поместить его значение в защищенное хранилище и изменять по мере необходимости, не перестраивая всё приложение. Конфигурация приложения .NET MAUI может осуществляться с помощью:

  1. сервиса конфигурации IConfiguration.
  2. менеджера предпочтений Preferences
  3. защищенного хранилища SecureStorage

Во всех трех случаях конфигурация приложения хранится в парах типа «ключ-значение».

Конфигурация приложения .NET MAUI в памяти (интерфейс IConfiguration)

По умолчанию, в приложении .NET MAUI уже зарегистрирован сервис IConfiguration, поэтому мы можем сразу им воспользоваться в нашем приложении. Этот интерфейс предоставляет доступ к набору свойств конфигурации приложения в виде пар «Ключ – Значение». Этот сервис предоставляет нам следующие свойства и методы для работы:

Название Тип/тип возвращаемого методом значения Описание
Свойства IConfiguration
Item[String] String Предоставляет доступ к настройке.
Методы IConfiguration
GetChildren() IEnumerable<IConfigurationSection> Возвращает непосредственных потомков узла конфигурации
GetSection (string key) IConfigurationSection Возвращает подраздел конфигурации с указанным ключом
GetReloadToken() IChangeToken Метод можно использовать для получения маркера изменения, уведомляющего о перезагрузке конфигурации

Чтобы воспользоваться конфигурацией, мы должны добавить в приложение провайдер конфигурации. По умолчанию, при использовании сервиса IConfiguration в .NET MAUI, используется один провайдер конфигурации, который добавляется в приложение с использованием метода расширения IConfigurationBuilder.AddInMemoryCollection()и позволяет работать с конфигурацией приложения, представленной объектами .NET в памяти.

Создадим новое приложение .NET MAUI и добавим новый источник конфигурации. Для этого откроем файл MauiProgram.cs и изменим его следующим образом:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace MauiConfiguration;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            });

        builder.Configuration.AddInMemoryCollection(new Dictionary<string, string?>
        {
            ["Message"] = "Привет, мир"
        }); 
        

#if DEBUG
        builder.Logging.AddDebug();
#endif

        return builder.Build();
    }
}

Здесь мы воспользовались версией метода расширения AddInMemoryCollection(), которая сразу позволяет добавить в память некоторую конфигурацию в виде словаря Dictionary<string, string?>.  Теперь мы можем воспользоваться этой конфигурацией в любом месте нашего приложения, получив из контейнера зависимостей сервис IConfiguration точно также, как и любой другой сервис.

Например, изменим код MainPage.xaml.cs следующим образом:

using Microsoft.Extensions.Configuration;

namespace MauiConfiguration
{
    public partial class MainPage : ContentPage
    {
       
        private readonly IConfiguration _configuration;

        public MainPage(IConfiguration configuration)
        {
            InitializeComponent();
            _configuration = configuration;
        }

        private void OnCounterClicked(object sender, EventArgs e)
        {
            helloLabel.Text = _configuration["Message"];
        }
    }

}

Здесь мы в конструкторе класса запрашиваем сервис IConfiguration, а в методе OnCounterClicked() присваиваем метке с именем helloLabel текст из настройки Message, которую мы добавили ранее в методе AddInMemoryCollection() и считываем с использованием сервиса.

XAML-код страницы будет таким:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiConfiguration.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
           

            <Label x:Name="helloLabel"
                Text="Hello, World!"
                Style="{StaticResource Headline}"
                SemanticProperties.HeadingLevel="Level1" />

            <Button
                x:Name="CounterBtn"
                Text="Click me" 
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Fill" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Запустим приложение и проверим результат:

Конфигурация приложения .NET MAUI

Аналогичным образом мы можем добавлять различные пары «ключ-значение» для дальнейшего их использования в приложении.

Итого

Конфигурацию приложения .NET MAUI в памяти удобно использовать в том случае, если вам не требуется хранение настроек после остановки приложения. Для использования этого способа конфигурации мы используем сервис IConfiguration. Если вам необходимо, чтобы настройки приложения сохранялись после остановки приложения, то необходимо использовать другие способы конфигурации, которые мы рассмотрим далее.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии