DI StartUp fixes

This commit is contained in:
NickAppLab
2022-07-29 16:36:15 +05:00
parent 5d2c6a85d7
commit efa7de7617
2 changed files with 18 additions and 12 deletions

View File

@@ -1,8 +1,7 @@
<Application x:Class="StructureHelper.App" <Application x:Class="StructureHelper.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:StructureHelper" xmlns:local="clr-namespace:StructureHelper">
StartupUri="Windows/MainWindow/MainView.xaml">
<Application.Resources> <Application.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>

View File

@@ -11,23 +11,30 @@ namespace StructureHelper
public partial class App : Application public partial class App : Application
{ {
public static IContainer Container { get; private set; } public static IContainer Container { get; private set; }
public static ILifetimeScope Scope { get; private set; }
protected override void OnStartup(StartupEventArgs e) protected override void OnStartup(StartupEventArgs e)
{ {
base.OnStartup(e);
var builder = new ContainerBuilder(); var builder = new ContainerBuilder();
builder.RegisterType<PrimitiveRepository>().As<IPrimitiveRepository>(); builder.RegisterType<PrimitiveRepository>().As<IPrimitiveRepository>().SingleInstance();
builder.RegisterType<PrimitiveService>().As<IPrimitiveService>(); builder.RegisterType<PrimitiveService>().As<IPrimitiveService>().SingleInstance();
builder.RegisterType<MainModel>().AsSelf(); builder.RegisterType<MainModel>().AsSelf().SingleInstance();
builder.RegisterType<MainViewModel>().AsSelf(); builder.RegisterType<MainViewModel>().AsSelf().SingleInstance();
builder.RegisterType<MainView>().AsSelf(); builder.RegisterType<MainView>().AsSelf();
Container = builder.Build(); Container = builder.Build();
Scope = Container.Resolve<ILifetimeScope>();
using (var scope = Container.BeginLifetimeScope()) var window = Scope.Resolve<MainView>();
{ window.Show();
var window = scope.Resolve<MainView>(); }
window.ShowDialog();
} protected override void OnExit(ExitEventArgs e)
{
Scope.Dispose();
base.OnExit(e);
} }
} }
} }