- add ioc container and bootstrapper

master
Simon G 5 years ago
parent 53c8eb9959
commit 18470554cf
  1. 17
      Mystify/App.axaml.cs
  2. 14
      Mystify/Bootstrapper.cs
  3. 1
      Mystify/Mystify.csproj

@ -1,6 +1,8 @@
using Avalonia; using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using LightweightIocContainer.Interfaces;
using Mystify.ViewModels; using Mystify.ViewModels;
using Mystify.Views; using Mystify.Views;
@ -8,19 +10,30 @@ namespace Mystify
{ {
public class App : Application public class App : Application
{ {
private IIocContainer? _kernel;
public override void Initialize() => AvaloniaXamlLoader.Load(this); public override void Initialize() => AvaloniaXamlLoader.Load(this);
public override void OnFrameworkInitializationCompleted() public override void OnFrameworkInitializationCompleted()
{ {
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) if (Design.IsDesignMode)
return;
Bootstrapper bootstrapper = new();
_kernel = bootstrapper.BootstrapKernel();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopStyleApplicationLifetime)
{ {
desktop.MainWindow = new MainWindow desktopStyleApplicationLifetime.MainWindow = new MainWindow
{ {
DataContext = new MainWindowViewModel(), DataContext = new MainWindowViewModel(),
}; };
desktopStyleApplicationLifetime.Exit += OnExit;
} }
base.OnFrameworkInitializationCompleted(); base.OnFrameworkInitializationCompleted();
} }
private void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args) => _kernel?.Dispose();
} }
} }

@ -0,0 +1,14 @@
// Author: Gockner, Simon
// Created: 2021-04-06
// Copyright(c) 2021 SimonG. All Rights Reserved.
using LightweightIocContainer;
using LightweightIocContainer.Interfaces;
namespace Mystify
{
public class Bootstrapper
{
public IIocContainer BootstrapKernel() => new IocContainer().Install();
}
}

@ -13,5 +13,6 @@
<PackageReference Include="Avalonia.Desktop" Version="0.10.0" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.0" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.0" /> <PackageReference Include="Avalonia.Diagnostics" Version="0.10.0" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.0" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.0" />
<PackageReference Include="LightweightIocContainer" Version="3.0.0-beta" />
</ItemGroup> </ItemGroup>
</Project> </Project>

Loading…
Cancel
Save