예제 #1
0
        /// <summary>
        /// register necessary type
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="containerManager"></param>
        /// <param name="broker"></param>
        /// <param name="configuration"></param>
        public virtual void Init(IEngine engine, IContainerManager containerManager, EventBroker broker, Config configuration)
        {
            // register singleton instance
            containerManager.AddComponentInstance<Config>(configuration, typeof(Config).Name);
            containerManager.AddComponentInstance<IEngine>(engine, engine.GetType().Name);
            containerManager.AddComponentInstance<EventBroker>(broker, broker.GetType().Name);
            containerManager.AddComponentInstance<ContainerConfigBase>(this, this.GetType().Name);

            // register type
            containerManager.AddComponent<ISearcher, WebsiteSearcher>(typeof(WebsiteSearcher).Name);

            // register type: should remove in future (to use configuration provider to config and register)
            // TO-DO: Check if I register this time multi times (should not)
            //containerManager.AddComponent<DatabaseSettings>(typeof(DatabaseSettings).Name); // to remove because data dll has been decoupled
            // TO-DO: Check if register it before and figure out how to set it
            containerManager.AddComponentInstance<StoreStateSettings>(
                new StoreStateSettings
                {
                    DefaultStoredThemeForDesktop = "Default",
                    DefaultStoredThemeForMobile = "Default",
                    EnableMiniProfile = true
                },
                typeof(StoreStateSettings).Name);
            containerManager.AddComponentInstance<UserSettings>(new UserSettings
                {
                    StoreLastVisitedPage = true,
                    UsingUserEmail = true
                },
                typeof(UserSettings).Name);
            // TO-DO: Check if register it before and figure out how to set it
            containerManager.AddComponentInstance<PageSettings>(new PageSettings { DefaultTitle = "HomePage" }, typeof(PageSettings).Name, Infrastructure.IoC.LifeStyle.Singleton);

            // register IRegistrar
            containerManager.UpdateContainer(build =>
            {
                var searcher = containerManager.Resolve<ISearcher>(typeof(WebsiteSearcher).Name);
                searcher.RoutingToExecute<IRegistrar>(i => i.Register(build, searcher));
            });

            // TO-DO
        }
예제 #2
0
 static EventBroker()
 {
     Current = new EventBroker();
 }