Содержание
Под конфигурацией приложения обычно понимаются какие-либо настройки, применяемые, при запуске приложения. Это могут быть такие настройки, как строки подключения к базам данных, настройки оформления приложения, включение дополнительных опций и т. д. Конфигурация приложения .NET MAUI может осуществляться несколькими способами, которые мы рассмотрим в этом разделе.
Общие сведения о конфигурация приложения .NET MAUI
Конфигурация приложения позволяет отделить какие-либо данные приложения от кода, что позволяет менять эти самые данные без перестроения приложения. Например, вам может потребоваться хранить ключ API для доступа к какому-либо онлайн-сервису. Так как ключ может изменяться (и довольно часто), то имеет смысл поместить его значение в защищенное хранилище и изменять по мере необходимости, не перестраивая всё приложение. Конфигурация приложения .NET MAUI может осуществляться с помощью:
- сервиса конфигурации
IConfiguration
. - менеджера предпочтений
Preferences
- защищенного хранилища
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 в памяти удобно использовать в том случае, если вам не требуется хранение настроек после остановки приложения. Для использования этого способа конфигурации мы используем сервис IConfiguration
. Если вам необходимо, чтобы настройки приложения сохранялись после остановки приложения, то необходимо использовать другие способы конфигурации, которые мы рассмотрим далее.