protected override void ConfigureApplicationContainer(ILifetimeScope existingContainer) { // Perform registration that should have an application lifetime existingContainer .RegisterNamedImplementation <IDataExecutor, CommonDataExecutor>("commondataex"); existingContainer .RegisterNamedImplementation <IViewExecutor, CommonViewExecutor>("commonviewex"); existingContainer .RegisterNamedImplementation <IViewExecutor, TaskListViewExecutor>("tasklistviewex"); existingContainer .RegisterNamedImplementation <IViewExecutor, InstanceListViewExecutor>("instancelistviewex"); existingContainer .RegisterSingleton <IPostMaster, PostMasterWork>(); existingContainer .RegisterSingleton <ILogic, Logic>(); existingContainer .RegisterImplementation <IRTask, RTask>(); var repository = new Repository(ConfigurationManager.AppSettings["DBConnStr"]); existingContainer .RegisterInstance <IRepository, Repository>(repository); // Partial bootstrapper for private named implementations registration IPrivateBootstrapper privboots = this as IPrivateBootstrapper; if (privboots != null) { privboots .PrivateConfigureApplicationContainer(existingContainer); } #region ConfigureMonik var logSender = new AzureSender( ConfigurationManager.AppSettings["monikendpoint"], "incoming"); existingContainer .RegisterInstance <IClientSender, AzureSender>(logSender); var monikSettings = new ClientSettings() { SourceName = "ReportServer", InstanceName = ConfigurationManager.AppSettings["InstanceName"], AutoKeepAliveEnable = true }; existingContainer .RegisterInstance <IClientSettings, ClientSettings>(monikSettings); existingContainer .RegisterSingleton <IClientControl, MonikInstance>(); #endregion #region ConfigureMapper var mapperConfig = new MapperConfiguration(cfg => cfg.AddProfile(typeof(MapperProfile))); // Hint: add to ctor if many profileSs needed: cfg.AddProfile(typeof(AutoMapperProfile)); existingContainer.RegisterSingleInstance <MapperConfiguration, MapperConfiguration>(mapperConfig); var mapper = existingContainer.Resolve <MapperConfiguration>().CreateMapper(); existingContainer.RegisterSingleInstance <IMapper, IMapper>(mapper); #endregion #region ConfigureCompressor var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), Environment.Is64BitProcess ? "x64" : "x86", "7z.dll"); SevenZipBase.SetLibraryPath(path); var compressor = new SevenZipCompressor { CompressionMode = CompressionMode.Create, ArchiveFormat = OutArchiveFormat.SevenZip }; var archiver = new Archiver7Zip(compressor); existingContainer.RegisterSingleInstance <IArchiver, Archiver7Zip>(archiver); #endregion #region ConfigureBot Uri proxyUri = new Uri(ConfigurationManager.AppSettings["proxyUriAddr"]); ICredentials credentials = new NetworkCredential(ConfigurationManager.AppSettings["proxyLogin"], ConfigurationManager.AppSettings["proxyPassword"]); WebProxy proxy = new WebProxy(proxyUri, true, null, credentials); TelegramBotClient bot = new TelegramBotClient(ConfigurationManager.AppSettings["BotToken"], proxy); existingContainer .RegisterSingleInstance <ITelegramBotClient, TelegramBotClient>(bot); #endregion existingContainer //why? .RegisterInstance <ILifetimeScope, ILifetimeScope>(existingContainer); }
public static IContainer InitContainer() { var builder = new ContainerBuilder(); builder.RegisterType <CachedServiceShell>() .As <IShell>() .SingleInstance(); builder .RegisterType <MainWindow>() .As <IDockWindow>(); builder .RegisterType <CachedService>() .As <ICachedService>() .SingleInstance(); var context = new AuthenticationContext(new Domain0ClientScope(new HttpClient())) { HostUrl = ConfigurationManager.AppSettings["BaseAuthUrl"], ShouldRemember = true }; builder.RegisterInstance(context) .As <IAuthenticationContext>() .SingleInstance(); ConfigureView <TaskManagerViewModel, TaskManagerView>(builder); ConfigureView <OperTemplatesManagerViewModel, OperTemplatesManagerView>(builder); ConfigureView <TaskEditorViewModel, TaskEditorView>(builder); ConfigureView <OperEditorViewModel, OperEditorView>(builder); ConfigureView <RecepientManagerViewModel, RecepientManagerView>(builder); ConfigureView <CronEditorViewModel, CronEditorView>(builder); ConfigureView <ScheduleManagerViewModel, ScheduleManagerView>(builder); ConfigureView <RecepientEditorViewModel, RecepientEditorView>(builder); ConfigureView <OperTemplatesListViewModel, OperTemplatesListView>(builder); #region monik var logSender = new AzureSender( ConfigurationManager.AppSettings["MonikEndpoint"], "incoming"); builder.RegisterInstance(logSender) .As <IMonikSender>(); var monikSettings = new ClientSettings { SourceName = "ReportServer", InstanceName = ConfigurationManager.AppSettings["MonikInstanceName"], AutoKeepAliveEnable = true }; builder.RegisterInstance(monikSettings) .As <IMonikSettings>(); builder .RegisterType <MonikClient>() .As <IMonik>() .SingleInstance(); #endregion #region mapper var mapperConfig = new MapperConfiguration(cfg => cfg.AddProfile(typeof(MapperProfile))); builder.RegisterInstance(mapperConfig) .As <MapperConfiguration>() .SingleInstance(); builder.Register(c => c.Resolve <MapperConfiguration>() .CreateMapper()) .As <IMapper>() .SingleInstance(); #endregion var container = builder.Build(); return(container); }
protected override void ConfigureApplicationContainer(ILifetimeScope existingContainer) { RegisterNamedDataImporter <DbImporter, DbImporterConfig> (existingContainer, "CommonDbImporter"); RegisterNamedDataImporter <ExcelImporter, ExcelImporterConfig> (existingContainer, "CommonExcelImporter"); RegisterNamedDataImporter <CsvImporter, CsvImporterConfig> (existingContainer, "CommonCsvImporter"); RegisterNamedDataImporter <SshImporter, SshImporterConfig> (existingContainer, "CommonSshImporter"); //RegisterNamedDataImporter<HistoryImporter, HistoryImporterConfig> // (existingContainer, "CommonHistoryImporter"); RegisterNamedDataExporter <EmailDataSender, EmailExporterConfig> (existingContainer, "CommonEmailSender"); RegisterNamedDataExporter <TelegramDataSender, TelegramExporterConfig> (existingContainer, "CommonTelegramSender"); RegisterNamedDataExporter <DbExporter, DbExporterConfig> (existingContainer, "CommonDbExporter"); RegisterNamedDataExporter <B2BExporter, B2BExporterConfig> (existingContainer, "CommonB2BExporter"); RegisterNamedDataExporter <SshExporter, SshExporterConfig> (existingContainer, "CommonSshExporter"); RegisterNamedDataExporter <FtpExporter, FtpExporterConfig> (existingContainer, "CommonFtpExporter"); RegisterNamedViewExecutor <CommonViewExecutor>(existingContainer, "commonviewex"); RegisterNamedViewExecutor <GroupedViewExecutor>(existingContainer, "GroupedViewex"); RegisterNamedViewExecutor <CommonTableViewExecutor>(existingContainer, "CommonTableViewEx"); existingContainer .RegisterSingleton <ILogic, Logic>(); existingContainer .RegisterImplementation <IReportTask, ReportTask.ReportTask>(); // Partial bootstrapper for private named implementations registration (this as IPrivateBootstrapper)? .PrivateConfigureApplicationContainer(existingContainer); #region ConfigureMonik var logSender = new AzureSender( ConfigurationManager.AppSettings["monikendpoint"], "incoming"); existingContainer .RegisterInstance <IMonikSender, AzureSender>(logSender); var monikSettings = new ClientSettings { SourceName = "ReportServer", InstanceName = ConfigurationManager.AppSettings["InstanceName"], AutoKeepAliveEnable = true }; existingContainer .RegisterInstance <IMonikSettings, ClientSettings>(monikSettings); existingContainer .RegisterSingleton <IMonik, MonikClient>(); #endregion var repository = new Repository(ConfigurationManager.AppSettings["DBConnStr"], existingContainer.Resolve <IMonik>()); existingContainer .RegisterInstance <IRepository, Repository>(repository); #region ConfigureMapper var mapperConfig = new MapperConfiguration(cfg => cfg.AddProfile(typeof(MapperProfile))); // Hint: add to ctor if many profileSs needed: cfg.AddProfile(typeof(AutoMapperProfile)); existingContainer.RegisterSingleInstance <MapperConfiguration, MapperConfiguration>( mapperConfig); var mapper = existingContainer.Resolve <MapperConfiguration>().CreateMapper(); existingContainer.RegisterSingleInstance <IMapper, IMapper>(mapper); #endregion existingContainer.RegisterImplementation <IDefaultTaskExporter, DefaultTaskExporter>(); existingContainer.RegisterNamedImplementation <IArchiver, ArchiverZip>("Zip"); existingContainer.RegisterNamedImplementation <IArchiver, Archiver7Zip>("7Zip"); switch (ConfigurationManager.AppSettings["ArchiveFormat"]) { case "Zip": existingContainer.RegisterImplementation <IArchiver, ArchiverZip>(); break; case "7Zip": existingContainer.RegisterImplementation <IArchiver, Archiver7Zip>(); break; } existingContainer.RegisterImplementation <IReportTaskRunContext, ReportTaskRunContext>(); existingContainer.RegisterImplementation <ITaskWorker, TaskWorker>(); existingContainer.RegisterImplementation <IPackageBuilder, ProtoPackageBuilder>(); existingContainer.RegisterImplementation <IPackageParser, ProtoPackageParser>(); existingContainer.RegisterImplementation <IProtoSerializer, ProtoSerializer>(); #region ConfigureBot Uri proxyUri = new Uri(ConfigurationManager.AppSettings["proxyUriAddr"]); ICredentials credentials = new NetworkCredential( ConfigurationManager.AppSettings["proxyLogin"], ConfigurationManager.AppSettings["proxyPassword"]); WebProxy proxy = new WebProxy(proxyUri, true, null, credentials); TelegramBotClient bot = new TelegramBotClient(ConfigurationManager.AppSettings["BotToken"], proxy); existingContainer .RegisterSingleInstance <ITelegramBotClient, TelegramBotClient>(bot); #endregion existingContainer //why? .RegisterInstance <ILifetimeScope, ILifetimeScope>(existingContainer); existingContainer.RegisterInstance <TokenValidationSettings, TokenValidationSettings>( new TokenValidationSettings { Audience = ConfigurationManager.AppSettings["Token_Audience"], Issuer = ConfigurationManager.AppSettings["Token_Issuer"], Keys = new[] { new KeyInfo { Key = ConfigurationManager.AppSettings["Token_Secret"], Alg = ConfigurationManager.AppSettings["Token_Alg"] } } }); }