Содержание
Под конфигурацией приложения обычно понимаются какие-либо настройки, применяемые, при запуске приложения. Это могут быть такие настройки, как строки подключения к базам данных, настройки оформления приложения, включение дополнительных опций и т. д. Конфигурация приложения .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. Если вам необходимо, чтобы настройки приложения сохранялись после остановки приложения, то необходимо использовать другие способы конфигурации, которые мы рассмотрим далее.