using AutoMapper; using Caliburn.Micro; using RMWPFInterfaceLibrary.Api; using RMWPFInterfaceLibrary.Helpers; using RMWPFInterfaceLibrary.Models; using RMWPFUserInterface.Helpers; using RMWPFUserInterface.Models; using RMWPFUserInterface.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; namespace RMWPFUserInterface { internal class BootStrapper : BootstrapperBase { private SimpleContainer _container = new SimpleContainer(); public BootStrapper() { Initialize(); ConventionManager.AddElementConvention( PasswordBoxHelper.BoundPasswordProperty, "Password", "PasswordChanged"); } protected override void Configure() { _container.Instance(ConfigureAutoMapper()); _container.Instance(_container) .PerRequest() .PerRequest(); _container .Singleton() .Singleton() .Singleton() .Singleton() .Singleton(); GetType().Assembly.GetTypes() .Where(type => type.IsClass) .Where(type => type.Name.EndsWith("ViewModel")) .ToList() .ForEach(viewModelType => _container.RegisterPerRequest( viewModelType, viewModelType.ToString(), viewModelType)); } private IMapper ConfigureAutoMapper() { var config = new MapperConfiguration(cfg => { cfg.CreateMap(); cfg.CreateMap(); }); var output = config.CreateMapper(); return output; } protected override void OnStartup(object sender, StartupEventArgs e) { DisplayRootViewForAsync(); } protected override object GetInstance(Type service, string key) { return _container.GetInstance(service, key); } protected override IEnumerable GetAllInstances(Type service) { return _container.GetAllInstances(service); } protected override void BuildUp(object instance) { _container.BuildUp(instance); } } }