// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace MauiApp1.Platforms.Windows;

/// <summary>
/// Provides application-specific behavior to supplement the default Application class.
/// </summary>
public partial class App
{
    private IServiceProvider _serviceProvider;

    /// <summary>
    /// Initializes the singleton application object.  This is the first line of authored code
    /// executed, and as such is the logical equivalent of main() or WinMain().
    /// </summary>
    public App()
    {
        this.InitializeComponent();
        Initialize();
    }

    protected override MauiApp CreateMauiApp()
    {
        var app = MauiProgram.CreateMauiApp();
        _serviceProvider = app.Services;
        return app;
    }

    protected override object GetInstance(Type service, string key)
    {
        return _serviceProvider.GetService(service);
    }

    protected override IEnumerable<object> GetAllInstances(Type service)
    {
        return _serviceProvider.GetServices(service);
    }
}