/// <summary>Shared through all session, but inner cmp to app scope initialization.</summary> static void RegisterSessionSingletons(DryIoc.Container container) { var tray = (TaskbarIcon)Application.Current.Resources["SysTray"]; container.UseInstance(tray); container.UseInstance(new AppInfo(typeof(App).Assembly)); container.UseInstance(TaskScheduler.FromCurrentSynchronizationContext()); // UI Tasks Scheduler }
internal static void Register(DryIoc.Container container) { Type getImplType(Request r) => r.Parent.ImplementationType; // https://bitbucket.org/dadhi/dryioc/wiki/ExamplesContextBasedResolution container.Register( made: Made.Of(() => LogManager.GetCurrentClassLogger(Arg.Index <Type>(0)), getImplType), setup: Setup.With(condition: req => req.Parent.ImplementationType != null), reuse: Reuse.Transient); container.UseInstance(new EnvInfo()); container.Register <ISettingsService, SettingsService>(Reuse.Singleton); container.Register(typeof(IShell <>), typeof(CommandPromptShell), Reuse.Singleton); // reg open gen https://bitbucket.org/dadhi/dryioc/wiki/OpenGenerics container.Register <IWebBrowser, WebBrowser>(Reuse.Singleton); }
internal static DryIoc.IContainer Compose() { var c = new DryIoc.Container(); c.Register <DirectoriesViewModel>(Reuse.Singleton); c.Register <SyncsViewModel>(Reuse.Singleton); c.Register <MainViewModel>(Reuse.Singleton); c.Register <IBusyStack, BusyStack>(Reuse.Transient); c.UseInstance(ScarletCommandBuilder.Default); c.UseInstance(ScarletCommandManager.Default); c.UseInstance(ScarletDispatcher.Default); c.UseInstance(ScarletExitService.Default); c.UseInstance(ScarletMessenger.Default); c.UseInstance(ScarletWeakEventManager.Default); return(c); }