Files
SewerGenerator/SewerStammGen.WPF/HostBuilders/AddViewModelsHostBuilderExtensions.cs

113 lines
4.8 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SewerStammGen.WPF.Commands;
using SewerStammGen.WPF.Interface;
using SewerStammGen.WPF.ViewModel;
using SewerStammGen.WPF.ViewModel.State.Navigation;
using SewerStammGen.WPF.ViewModel.Factories;
using Shared.Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Security;
using System.Text;
using System.Threading.Tasks;
using SewerStammGen.WPF.ViewModel.State;
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
namespace SewerStammGen.HostBuilders
{
static class AddViewModelsHostBuilderExtensions
{
public static IHostBuilder AddViewModels(this IHostBuilder hostBuilder)
{
hostBuilder.ConfigureServices(services =>
{
services.AddTransient<MainWindowViewModel>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjektListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjektEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ManholeListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ManholeEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<HaltungListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<HaltungEditViewModel>>();
services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
return () => new HomeViewModel();
});
#region Schächte
services.AddSingleton<CreateViewModel<ManholeListViewModel>>(services =>
{
return () => new ManholeListViewModel(
services.GetRequiredService<ISchachtDataService>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ManholeEditViewModel>>(),
services.GetRequiredService<IActualState>()
);
});
services.AddSingleton<CreateViewModel<ManholeEditViewModel>>(services =>
{
return () => new ManholeEditViewModel(
services.GetRequiredService<ISchachtDataService>(),
services.GetRequiredService<IActualState>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ManholeListViewModel>>()
);
});
#endregion
#region Haltungen
services.AddSingleton<CreateViewModel<HaltungListViewModel>>(services =>
{
return () => new HaltungListViewModel(
services.GetRequiredService<IHaltungDataService>(),
services.GetRequiredService<IActualState>(),
services.GetRequiredService<ViewModelDelegateRenavigator<HaltungEditViewModel>>()
);
});
services.AddTransient<CreateViewModel<HaltungEditViewModel>>(services =>
{
return () => new HaltungEditViewModel(
services.GetRequiredService<IHaltungDataService>(),
services.GetRequiredService<IActualState>(),
services.GetRequiredService<ViewModelDelegateRenavigator<HaltungListViewModel>>(),
services.GetRequiredService<ISchachtDataService>()
);
});
#endregion
#region Projekte
services.AddSingleton<CreateViewModel<ProjektEditViewModel>>(services =>
{
return () => new ProjektEditViewModel(
services.GetRequiredService<IProjektDataService>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjektListViewModel>>(),
services.GetRequiredService<IActualState>()
);
});
services.AddSingleton<CreateViewModel<ProjektListViewModel>>(services =>
{
return () => new ProjektListViewModel(
services.GetRequiredService<IProjektDataService>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjektEditViewModel>>(),
services.GetRequiredService<IActualState>()
);
});
#endregion
services.AddSingleton<IViewModelAbstractFactory, MainWindowViewModelFactory>();
});
return hostBuilder;
}
}
}