From 0edc29e733fef9108d1395764be4c444d98c9bbe Mon Sep 17 00:00:00 2001 From: Matthew Leibowitz Date: Tue, 27 Apr 2021 01:33:04 +0200 Subject: [PATCH] Improve Hot Reload Integration (#851) --- src/Core/src/Hosting/AppHost.cs | 19 ++++++ src/Core/src/Hosting/AppHostBuilder.cs | 14 +--- .../src/Hosting/AppHostBuilderExtensions.cs | 44 +++---------- .../src/Hosting/IMauiHandlersCollection.cs | 2 +- .../Hosting/IMauiHandlersServiceProvider.cs | 2 +- .../Internal/MauiHandlersCollection.cs | 8 +++ .../Internal/MauiHandlersServiceProvider.cs | 10 ++- .../MauiHandlersCollectionExtensions.cs | 24 +++++++ src/Core/src/Hosting/StartupExtensions.cs | 2 +- .../src/HotReload/AppHostBuilderExtensions.cs | 66 +++++++++++++++++++ src/Core/src/HotReload/HotReloadHelper.cs | 6 +- .../IHotReloadableHandlersServiceProvider.cs | 10 +++ .../Benchmarks/GetHandlersBenchmarker.cs | 4 +- .../MauiServiceProviderBenchmarker.cs | 28 ++++---- .../DeviceTests/Handlers/HandlerTestBase.cs | 4 +- .../UnitTests/AbstractViewHandlerTests.cs | 2 +- .../Hosting/HostBuilderHandlerTests.cs | 39 ++++++----- 17 files changed, 188 insertions(+), 96 deletions(-) create mode 100644 src/Core/src/Hosting/AppHost.cs create mode 100644 src/Core/src/Hosting/Internal/MauiHandlersCollection.cs create mode 100644 src/Core/src/HotReload/AppHostBuilderExtensions.cs create mode 100644 src/Core/src/HotReload/IHotReloadableHandlersServiceProvider.cs diff --git a/src/Core/src/Hosting/AppHost.cs b/src/Core/src/Hosting/AppHost.cs new file mode 100644 index 000000000000..13fc528975fb --- /dev/null +++ b/src/Core/src/Hosting/AppHost.cs @@ -0,0 +1,19 @@ +#nullable enable + +namespace Microsoft.Maui.Hosting +{ + public static class AppHost + { + public static IAppHostBuilder CreateDefaultBuilder() + { + var builder = new AppHostBuilder(); + + builder.UseMauiServiceProviderFactory(false); + + builder.UseMauiHandlers(); + builder.ConfigureFonts(); + + return builder; + } + } +} \ No newline at end of file diff --git a/src/Core/src/Hosting/AppHostBuilder.cs b/src/Core/src/Hosting/AppHostBuilder.cs index dce448c9967e..db05dccb2e46 100644 --- a/src/Core/src/Hosting/AppHostBuilder.cs +++ b/src/Core/src/Hosting/AppHostBuilder.cs @@ -37,18 +37,6 @@ public AppHostBuilder() public IDictionary Properties => new Dictionary(); - public static IAppHostBuilder CreateDefaultAppBuilder() - { - var builder = new AppHostBuilder(); - - builder.UseMauiServiceProviderFactory(false); - - builder.UseMauiHandlers(); - builder.ConfigureFonts(); - - return builder; - } - public IAppHost Build() { _services = _serviceCollectionFactory(); @@ -76,7 +64,7 @@ public IAppHost Build() ConfigureServiceCollectionBuilders(_serviceProvider); - return new AppHost(_serviceProvider, null); + return new Internal.AppHost(_serviceProvider, null); } public IAppHostBuilder ConfigureAppConfiguration(Action configureDelegate) diff --git a/src/Core/src/Hosting/AppHostBuilderExtensions.cs b/src/Core/src/Hosting/AppHostBuilderExtensions.cs index 5126b17934fe..317300caf62b 100644 --- a/src/Core/src/Hosting/AppHostBuilderExtensions.cs +++ b/src/Core/src/Hosting/AppHostBuilderExtensions.cs @@ -1,13 +1,11 @@ #nullable enable using System; using System.Collections.Generic; -using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Maui.Handlers; using Microsoft.Maui.Hosting.Internal; -using Microsoft.Maui.HotReload; namespace Microsoft.Maui.Hosting { @@ -64,6 +62,13 @@ public static IAppHostBuilder ConfigureServices(this IAppHostBuilder b return builder; } + public static IAppHostBuilder ConfigureServices(this IAppHostBuilder builder) + where TBuilder : IMauiServiceBuilder, new() + { + builder.ConfigureServices((_, services) => { }); + return builder; + } + public static IAppHostBuilder ConfigureAppConfiguration(this IAppHostBuilder builder, Action configureDelegate) { builder.ConfigureAppConfiguration((_, config) => configureDelegate(config)); @@ -96,40 +101,7 @@ public static IAppHostBuilder UseMauiServiceProviderFactory(this IAppHostBuilder return builder; } - public static IAppHostBuilder EnableHotReload(this IAppHostBuilder builder, string? ideIp = null, int idePort = 9988) - { - builder.ConfigureMauiHandlers((context, handlersCollection) => - { - if (handlersCollection is IMauiServiceCollection mauiCollection) - MauiHotReloadHelper.Init(mauiCollection); - else - throw new NotSupportedException("Hot Reload only works with a IMauiServiceCollection"); - }); - Reloadify.Reload.Instance.ReplaceType = (d) => - { - MauiHotReloadHelper.RegisterReplacedView(d.ClassName, d.Type); - }; - - Reloadify.Reload.Instance.FinishedReload = () => - { - MauiHotReloadHelper.TriggerReload(); - }; - Task.Run(async () => - { - try - { - var success = await Reloadify.Reload.Init(ideIp, idePort); - Console.WriteLine($"HotReload Initialize: {success}"); - } - catch (Exception ex) - { - Console.WriteLine(ex); - } - }); - return builder; - } - - class HandlerCollectionBuilder : MauiServiceCollection, IMauiHandlersCollection, IMauiServiceBuilder + class HandlerCollectionBuilder : MauiHandlersCollection, IMauiServiceBuilder { public void ConfigureServices(HostBuilderContext context, IServiceCollection services) { diff --git a/src/Core/src/Hosting/IMauiHandlersCollection.cs b/src/Core/src/Hosting/IMauiHandlersCollection.cs index e5418f9514d2..786539c1d341 100644 --- a/src/Core/src/Hosting/IMauiHandlersCollection.cs +++ b/src/Core/src/Hosting/IMauiHandlersCollection.cs @@ -2,7 +2,7 @@ namespace Microsoft.Maui.Hosting { - public interface IMauiHandlersCollection : IServiceCollection + public interface IMauiHandlersCollection : IMauiServiceCollection { } } \ No newline at end of file diff --git a/src/Core/src/Hosting/IMauiHandlersServiceProvider.cs b/src/Core/src/Hosting/IMauiHandlersServiceProvider.cs index 133c29ad804b..944950e8db50 100644 --- a/src/Core/src/Hosting/IMauiHandlersServiceProvider.cs +++ b/src/Core/src/Hosting/IMauiHandlersServiceProvider.cs @@ -3,7 +3,7 @@ namespace Microsoft.Maui { - public interface IMauiHandlersServiceProvider : IServiceProvider + public interface IMauiHandlersServiceProvider : IMauiServiceProvider { Type? GetHandlerType(Type iview); diff --git a/src/Core/src/Hosting/Internal/MauiHandlersCollection.cs b/src/Core/src/Hosting/Internal/MauiHandlersCollection.cs new file mode 100644 index 000000000000..f586c773dc1d --- /dev/null +++ b/src/Core/src/Hosting/Internal/MauiHandlersCollection.cs @@ -0,0 +1,8 @@ +#nullable enable + +namespace Microsoft.Maui.Hosting.Internal +{ + class MauiHandlersCollection : MauiServiceCollection, IMauiHandlersCollection + { + } +} \ No newline at end of file diff --git a/src/Core/src/Hosting/Internal/MauiHandlersServiceProvider.cs b/src/Core/src/Hosting/Internal/MauiHandlersServiceProvider.cs index 4236b7382807..c8bef1cabd8d 100644 --- a/src/Core/src/Hosting/Internal/MauiHandlersServiceProvider.cs +++ b/src/Core/src/Hosting/Internal/MauiHandlersServiceProvider.cs @@ -1,13 +1,17 @@ #nullable enable using System; +using Microsoft.Maui.HotReload; namespace Microsoft.Maui.Hosting.Internal { - class MauiHandlersServiceProvider : MauiServiceProvider, IMauiHandlersServiceProvider + class MauiHandlersServiceProvider : MauiServiceProvider, IMauiHandlersServiceProvider, IHotReloadableHandlersServiceProvider { - public MauiHandlersServiceProvider(IMauiServiceCollection collection) + readonly IMauiHandlersCollection _collection; + + public MauiHandlersServiceProvider(IMauiHandlersCollection collection) : base(collection, false) { + _collection = collection; } public IViewHandler? GetHandler(Type type) @@ -17,5 +21,7 @@ public MauiHandlersServiceProvider(IMauiServiceCollection collection) => GetHandler(typeof(T)); public Type? GetHandlerType(Type iview) => GetServiceType(iview)?.ImplementationType; + + public IMauiHandlersCollection GetCollection() => _collection; } } \ No newline at end of file diff --git a/src/Core/src/Hosting/MauiHandlersCollectionExtensions.cs b/src/Core/src/Hosting/MauiHandlersCollectionExtensions.cs index 8c2842b8588d..c75df282f9dc 100644 --- a/src/Core/src/Hosting/MauiHandlersCollectionExtensions.cs +++ b/src/Core/src/Hosting/MauiHandlersCollectionExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; namespace Microsoft.Maui.Hosting { @@ -28,5 +29,28 @@ public static IMauiHandlersCollection AddHandler(this IMauiH handlersCollection.AddTransient(typeof(TType), typeof(TTypeRender)); return handlersCollection; } + + public static IMauiHandlersCollection TryAddHandlers(this IMauiHandlersCollection handlersCollection, Dictionary handlers) + { + foreach (var handler in handlers) + { + handlersCollection.TryAddTransient(handler.Key, handler.Value); + } + return handlersCollection; + } + + public static IMauiHandlersCollection TryAddHandler(this IMauiHandlersCollection handlersCollection, Type viewType, Type handlerType) + { + handlersCollection.AddTransient(viewType, handlerType); + return handlersCollection; + } + + public static IMauiHandlersCollection TryAddHandler(this IMauiHandlersCollection handlersCollection) + where TType : IFrameworkElement + where TTypeRender : IViewHandler + { + handlersCollection.AddTransient(typeof(TType), typeof(TTypeRender)); + return handlersCollection; + } } } \ No newline at end of file diff --git a/src/Core/src/Hosting/StartupExtensions.cs b/src/Core/src/Hosting/StartupExtensions.cs index 1343aa3ae03d..d4b70a669bca 100644 --- a/src/Core/src/Hosting/StartupExtensions.cs +++ b/src/Core/src/Hosting/StartupExtensions.cs @@ -7,7 +7,7 @@ public static IAppHostBuilder CreateAppHostBuilder(this IStartup startup) if (startup is IAppHostBuilderStartup hostBuilderStartup) return hostBuilderStartup.CreateAppHostBuilder(); - return AppHostBuilder.CreateDefaultAppBuilder(); + return AppHost.CreateDefaultBuilder(); } public static IAppHostBuilder ConfigureUsing(this IAppHostBuilder appHostBuilder, IStartup startup) diff --git a/src/Core/src/HotReload/AppHostBuilderExtensions.cs b/src/Core/src/HotReload/AppHostBuilderExtensions.cs new file mode 100644 index 000000000000..ee4362513a90 --- /dev/null +++ b/src/Core/src/HotReload/AppHostBuilderExtensions.cs @@ -0,0 +1,66 @@ +#nullable enable +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Maui.HotReload; + +namespace Microsoft.Maui.Hosting +{ + public static partial class AppHostBuilderExtensions + { + public static IAppHostBuilder EnableHotReload(this IAppHostBuilder builder, string? ideIp = null, int idePort = 9988) + { + builder.ConfigureServices(hotReload => + { + hotReload.IdeIp = ideIp; + hotReload.IdePort = idePort; + }); + return builder; + } + + class HotReloadBuilder : IMauiServiceBuilder + { + public string? IdeIp { get; set; } + + public int IdePort { get; set; } = 9988; + + public void ConfigureServices(HostBuilderContext context, IServiceCollection services) + { + } + + public async void Configure(HostBuilderContext context, IServiceProvider services) + { + var handlers = services.GetRequiredService(); + if (handlers is IHotReloadableHandlersServiceProvider hotReloadable) + MauiHotReloadHelper.Init(hotReloadable.GetCollection()); + else + throw new NotSupportedException($"Hot Reload only works with a {nameof(IHotReloadableHandlersServiceProvider)}."); + + Reloadify.Reload.Instance.ReplaceType = (d) => + { + MauiHotReloadHelper.RegisterReplacedView(d.ClassName, d.Type); + }; + + Reloadify.Reload.Instance.FinishedReload = () => + { + MauiHotReloadHelper.TriggerReload(); + }; + + await Task.Run(async () => + { + try + { + var success = await Reloadify.Reload.Init(IdeIp, IdePort); + + Console.WriteLine($"HotReload Initialize: {success}"); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + }); + } + } + } +} \ No newline at end of file diff --git a/src/Core/src/HotReload/HotReloadHelper.cs b/src/Core/src/HotReload/HotReloadHelper.cs index e2921a3bc03f..cebaca36f91b 100644 --- a/src/Core/src/HotReload/HotReloadHelper.cs +++ b/src/Core/src/HotReload/HotReloadHelper.cs @@ -11,9 +11,9 @@ namespace Microsoft.Maui.HotReload { public static class MauiHotReloadHelper { - static IMauiServiceCollection? HandlerService; + static IMauiHandlersCollection? HandlerService; //static IMauiHandlersServiceProvider? HandlerServiceProvider; - public static void Init(IMauiServiceCollection handlerService) + public static void Init(IMauiHandlersCollection handlerService) { HandlerService = handlerService; //HandlerServiceProvider = new MauiHandlersServiceProvider(handlerService); @@ -148,7 +148,7 @@ static void RegisterHandler(KeyValuePair pair, Type newHandler) var newType = newHandler; if (pair.Value.IsGenericType) newType = pair.Value.GetGenericTypeDefinition().MakeGenericType(newHandler); - HandlerService.AddTransient(view, newType); + HandlerService.AddHandler(view, newType); } public static void TriggerReload() diff --git a/src/Core/src/HotReload/IHotReloadableHandlersServiceProvider.cs b/src/Core/src/HotReload/IHotReloadableHandlersServiceProvider.cs new file mode 100644 index 000000000000..533bd79c1dcc --- /dev/null +++ b/src/Core/src/HotReload/IHotReloadableHandlersServiceProvider.cs @@ -0,0 +1,10 @@ +#nullable enable +using Microsoft.Maui.Hosting; + +namespace Microsoft.Maui.HotReload +{ + public interface IHotReloadableHandlersServiceProvider : IMauiHandlersServiceProvider + { + IMauiHandlersCollection GetCollection(); + } +} \ No newline at end of file diff --git a/src/Core/tests/Benchmarks/Benchmarks/GetHandlersBenchmarker.cs b/src/Core/tests/Benchmarks/Benchmarks/GetHandlersBenchmarker.cs index b4dabe6f95b0..2819b231fe6a 100644 --- a/src/Core/tests/Benchmarks/Benchmarks/GetHandlersBenchmarker.cs +++ b/src/Core/tests/Benchmarks/Benchmarks/GetHandlersBenchmarker.cs @@ -16,8 +16,8 @@ public class GetHandlersBenchmarker [GlobalSetup(Target = nameof(GetHandlerUsingDI))] public void SetupForDI() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .Build(); } diff --git a/src/Core/tests/Benchmarks/Benchmarks/MauiServiceProviderBenchmarker.cs b/src/Core/tests/Benchmarks/Benchmarks/MauiServiceProviderBenchmarker.cs index 0e284747448c..7dbcb582ca9f 100644 --- a/src/Core/tests/Benchmarks/Benchmarks/MauiServiceProviderBenchmarker.cs +++ b/src/Core/tests/Benchmarks/Benchmarks/MauiServiceProviderBenchmarker.cs @@ -17,8 +17,8 @@ public class MauiServiceProviderBenchmarker [IterationSetup(Target = nameof(DefaultBuilder))] public void SetupForDefaultBuilder() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .ConfigureServices((ctx, svc) => svc.AddTransient()) .Build(); } @@ -26,8 +26,8 @@ public void SetupForDefaultBuilder() [IterationSetup(Target = nameof(DefaultBuilderWithConstructorInjection))] public void SetupForDefaultBuilderWithConstructorInjection() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseMauiServiceProviderFactory(true) .ConfigureServices((ctx, svc) => svc.AddTransient()) .Build(); @@ -36,8 +36,8 @@ public void SetupForDefaultBuilderWithConstructorInjection() [IterationSetup(Target = nameof(OneConstructorParameter))] public void SetupForOneConstructorParameter() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseMauiServiceProviderFactory(true) .ConfigureServices((ctx, svc) => { @@ -50,8 +50,8 @@ public void SetupForOneConstructorParameter() [IterationSetup(Target = nameof(TwoConstructorParameters))] public void SetupForTwoConstructorParameters() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseMauiServiceProviderFactory(true) .ConfigureServices((ctx, svc) => { @@ -65,8 +65,8 @@ public void SetupForTwoConstructorParameters() [IterationSetup(Target = nameof(ExtensionsWithConstructorInjection))] public void SetupForExtensionsWithConstructorInjection() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseServiceProviderFactory(new DIExtensionsServiceProviderFactory()) .ConfigureServices((ctx, svc) => svc.AddTransient()) .Build(); @@ -75,8 +75,8 @@ public void SetupForExtensionsWithConstructorInjection() [IterationSetup(Target = nameof(ExtensionsWithOneConstructorParameter))] public void SetupForExtensionsWithOneConstructorParameter() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseServiceProviderFactory(new DIExtensionsServiceProviderFactory()) .ConfigureServices((ctx, svc) => { @@ -89,8 +89,8 @@ public void SetupForExtensionsWithOneConstructorParameter() [IterationSetup(Target = nameof(ExtensionsWithTwoConstructorParameters))] public void SetupForExtensionsWithTwoConstructorParameters() { - _host = AppHostBuilder - .CreateDefaultAppBuilder() + _host = AppHost + .CreateDefaultBuilder() .UseServiceProviderFactory(new DIExtensionsServiceProviderFactory()) .ConfigureServices((ctx, svc) => { diff --git a/src/Core/tests/DeviceTests/Handlers/HandlerTestBase.cs b/src/Core/tests/DeviceTests/Handlers/HandlerTestBase.cs index 6fefe35c1e1b..fb1a9783c26b 100644 --- a/src/Core/tests/DeviceTests/Handlers/HandlerTestBase.cs +++ b/src/Core/tests/DeviceTests/Handlers/HandlerTestBase.cs @@ -17,8 +17,8 @@ public partial class HandlerTestBase : TestBase, IDisposable public HandlerTestBase() { - var appBuilder = AppHostBuilder - .CreateDefaultAppBuilder() + var appBuilder = AppHost + .CreateDefaultBuilder() .ConfigureFonts((ctx, fonts) => { fonts.AddFont("dokdo_regular.ttf", "Dokdo"); diff --git a/src/Core/tests/UnitTests/AbstractViewHandlerTests.cs b/src/Core/tests/UnitTests/AbstractViewHandlerTests.cs index 32d15402abe4..39cccc79f044 100644 --- a/src/Core/tests/UnitTests/AbstractViewHandlerTests.cs +++ b/src/Core/tests/UnitTests/AbstractViewHandlerTests.cs @@ -75,7 +75,7 @@ public void GetRequiredServiceRetrievesService() HandlerStub handlerStub = new HandlerStub(); var collection = new MauiServiceCollection(); - collection.TryAddSingleton(new MauiHandlersServiceProvider(new MauiServiceCollection())); + collection.TryAddSingleton(new MauiHandlersServiceProvider(new MauiHandlersCollection())); collection.TryAddSingleton(); var provider = new MauiServiceProvider(collection, false); diff --git a/src/Core/tests/UnitTests/Hosting/HostBuilderHandlerTests.cs b/src/Core/tests/UnitTests/Hosting/HostBuilderHandlerTests.cs index e9eb8ca7cd85..b0e7fe79c4c7 100644 --- a/src/Core/tests/UnitTests/Hosting/HostBuilderHandlerTests.cs +++ b/src/Core/tests/UnitTests/Hosting/HostBuilderHandlerTests.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Maui.Handlers; using Microsoft.Maui.Hosting; -using Microsoft.Maui.Hosting.Internal; using Xunit; namespace Microsoft.Maui.UnitTests @@ -14,8 +13,8 @@ public class HostBuilderHandlerTests [Fact] public void CanBuildAHost() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .Build(); Assert.NotNull(host); @@ -24,22 +23,22 @@ public void CanBuildAHost() [Fact] public void CanGetIMauiHandlersServiceProviderFromServices() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .Build(); Assert.NotNull(host); Assert.NotNull(host.Services); Assert.NotNull(host.Handlers); - Assert.IsType(host.Handlers); + Assert.IsType(host.Handlers); Assert.Equal(host.Handlers, host.Services.GetService()); } [Fact] public void CanRegisterAndGetHandlerUsingType() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandler()) .Build(); @@ -52,8 +51,8 @@ public void CanRegisterAndGetHandlerUsingType() [Fact] public void CanRegisterAndGetHandler() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandler()) .Build(); @@ -66,8 +65,8 @@ public void CanRegisterAndGetHandler() [Fact] public void CanRegisterAndGetHandlerWithType() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandler(typeof(IViewStub), typeof(ViewHandlerStub))) .Build(); @@ -85,8 +84,8 @@ public void CanRegisterAndGetHandlerWithDictionary() { typeof(IViewStub), typeof(ViewHandlerStub) } }; - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandlers(dic)) .Build(); @@ -99,8 +98,8 @@ public void CanRegisterAndGetHandlerWithDictionary() [Fact] public void CanRegisterAndGetHandlerForConcreteType() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandler()) .Build(); @@ -113,8 +112,8 @@ public void CanRegisterAndGetHandlerForConcreteType() [Fact] public void DefaultHandlersAreRegistered() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .Build(); var handler = host.Handlers.GetHandler(typeof(IButton)); @@ -126,8 +125,8 @@ public void DefaultHandlersAreRegistered() [Fact] public void CanSpecifyHandler() { - var host = AppHostBuilder - .CreateDefaultAppBuilder() + var host = AppHost + .CreateDefaultBuilder() .ConfigureMauiHandlers((_, handlers) => handlers.AddHandler()) .Build();