using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using SewerStammGen.Shared.Contracts; using StammGenerator.Interface; using StammGenerator.ViewModel; using StammGenerator.ViewModel.Factories; namespace StammGenerator.HostBuilders { static class AddViewModelsHostBuilderExtensions { public static IHostBuilder AddViewModels(this IHostBuilder hostBuilder) { hostBuilder.ConfigureServices(services => { services.AddTransient(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(); services.AddSingleton>(services => { return () => new HomeViewModel(); }); #region Schächte services.AddSingleton>(services => { return () => new ManholeListViewModel( services.GetRequiredService(), services.GetRequiredService>(), services.GetRequiredService() ); }); services.AddSingleton>(services => { return () => new ManholeEditViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>() ); }); services.AddSingleton>(services => { return () => new ManholeImportViewModel( services.GetRequiredService(), services.GetRequiredService>(), services.GetRequiredService() ); }); #endregion #region Haltungen services.AddSingleton>(services => { return () => new HaltungListViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>() ); }); services.AddTransient>(services => { return () => new HaltungEditViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>(), services.GetRequiredService() ); }); #endregion #region Projekte services.AddSingleton>(services => { return () => new ProjektEditViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>() ); }); services.AddSingleton>(services => { return () => new ProjektListViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>(), services.GetRequiredService>() ); }); #endregion services.AddSingleton(); }); return hostBuilder; } } }