MAUI: как регистрировать обработчики в библиотеке
Узнайте, как регистрировать обработчики представлений и сервисы внутри библиотеки .NET MAUI с использованием паттерна builder и методов расширения MauiAppBuilder.
Разрабатываете ли вы библиотеку пользовательских элементов управления или просто разбиваете решение на несколько проектов, вы, скорее всего, столкнётесь с ситуацией, когда нужно зарегистрировать обработчики представлений и сервисы из библиотеки MAUI.
Сразу оговоримся: никакой регистрации с нулевой конфигурацией здесь нет. MAUI использует паттерн builder для создания приложения, и вам потребуется доступ к этому builder, чтобы зарегистрировать свои обработчики и сервисы.
Лучший подход к этой задаче — определить статический класс с методом расширения для MauiAppBuilder в проекте вашей библиотеки. Пример приведён ниже:
public static class Config
{
public static MauiAppBuilder UseMyPlugin(this MauiAppBuilder builder)
{
builder.ConfigureMauiHandlers(handlers =>
{
handlers.AddHandler(typeof(MyView), typeof(MyViewHandler));
});
builder.Services.AddSingleton<IMyService, MyService>();
return builder;
}
}
Такая реализация следует паттерну builder и легко интегрируется в проект-потребитель. Достаточно открыть Program.cs вашего MAUI-приложения и добавить .UseMyPlugin() в цепочку вызовов app builder.
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMyPlugin()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
return builder.Build();
}
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.