void Common.IContainer.Configure(Type component, DependencyLifecycle dependencyLifecycle)
        {
            lock (configuredInstances)
            {
                if (configuredInstances.ContainsKey(component))
                {
                    return;
                }
            }

            var lifecycle = GetLifecycleFrom(dependencyLifecycle);

            ConfiguredInstance configuredInstance = null;

            container.Configure(x =>
            {
                configuredInstance = x.For(component)
                                     .LifecycleIs(lifecycle)
                                     .Use(component);

                x.EnableSetterInjectionFor(component);

                foreach (var implementedInterface in GetAllInterfacesImplementedBy(component))
                {
                    x.RegisterAdditionalInterfaceForPluginType(implementedInterface, component, lifecycle);

                    x.EnableSetterInjectionFor(implementedInterface);
                }
            });

            lock (configuredInstances)
                configuredInstances.Add(component, configuredInstance);
        }
示例#2
0
        /// <summary>
        ///     Configures services needed by event store.
        /// </summary>
        /// <param name="container">The container.</param>
        protected virtual void ConfigureEventStore(IContainer container)
        {
            container.Configure(x => x.For <IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use <UnitOfWork>());
            container.Configure(x => x.For <IUnitOfWorkProvider>().Singleton().Use <UnitOfWorkProvider>());

            container.Configure(x => x.For <IEventStoreFactory>().Singleton().Use <EventStoreFactory>());
            container.Configure(x => x.For <IEventStoreRepository>().HybridHttpOrThreadLocalScoped().Use <EventStoreRepository>());
            container.Configure(x => x.For <IDetectConflicts>().Use <EmptyConflictDetector>());
        }
示例#3
0
        /// <summary>
        ///     Configures the security.
        /// </summary>
        /// <param name="appContainer">The app container.</param>
        protected virtual void ConfigureSecurity(IContainer appContainer)
        {
            appContainer.Configure(c => c.For <ICurrentUserPermissionService>().Use <CurrentUserPermissionService>());
            appContainer.Configure(c => c.For <ICurrentClaimsPrincipalService>().Use <CurrentClaimsPrincipleService>());
            appContainer.Configure(c => c.For <IAccessControlManager>().Singleton().Use <ProCenterAccessControlManager>());
            appContainer.Configure(c => c.For <IProvidePermissions>().Use(conf => conf.GetInstance <IAccessControlManager>() as IProvidePermissions));
            var accessCtrlMgr         = appContainer.GetInstance <IAccessControlManager>();
            var permissionDescriptors = appContainer.GetAllInstances <IPermissionDescriptor>();

            accessCtrlMgr.RegisterPermissionDescriptor(permissionDescriptors.ToArray());
        }
示例#4
0
 public IServiceRegister Register <TService>(Func <IServiceProvider, TService> serviceCreator) where TService : class
 {
     if (ServiceRegistered <TService>())
     {
         return(this);
     }
     structureMapContainer.Configure(
         c => c.For <TService>().Singleton().Use(() => serviceCreator(this))
         );
     return(this);
 }
示例#5
0
        public static void ConfigureGoogleDependencies(this StructureMap.IContainer container, StructureMapBootStrapper.DependencyType type)
        {
            switch (type)
            {
            case StructureMapBootStrapper.DependencyType.TEST:
                container.Configure(ConfigureLive);     // no test mode yet
                break;

            case StructureMapBootStrapper.DependencyType.LIVE:
                container.Configure(ConfigureLive);
                break;
            }
        }
示例#6
0
 public void Register(Type plugin, Type concrete, bool singleton)
 {
     _container.Configure(x =>
     {
         if (singleton)
         {
             x.ForSingletonOf(plugin).Use(concrete);
         }
         else
         {
             x.For(plugin).Use(concrete);
         }
     });
 }
示例#7
0
        private void BootstrapContainer()
        {
            _container = new StructureMap.Container();
            _container.Configure(x =>
            {
                x.For <IConfiguration>()
                .Singleton()
                .Use <Configuration>();
            });

            var registry = new SystemViewRegistry(_container);

            _container.Configure(x => x.AddRegistry(registry));
        }
示例#8
0
文件: Program.cs 项目: girish66/REM
        private static void InitializeAndRegisterPersistenceStuff(IContainer container)
        {
            var configurationProvider = container.GetInstance <IConfigurationProvider> ();
            var configuration         = configurationProvider.Configure().GetEnumerator().Current;

            configuration.SetProperty(
                Environment.CurrentSessionContextClass,
                "uNhAddIns.SessionEasier.Contexts.ThreadLocalSessionContext, uNhAddIns");
            var sessionFactoryProvider = new SessionFactoryProvider(configurationProvider);

            sessionFactoryProvider.Initialize();

            container.Configure(x => x.For <ISessionFactoryProvider> ().Singleton().Use(sessionFactoryProvider));
            container.Configure(x => x.For <ISessionProvider> ().Use <SessionProvider> ());
        }
示例#9
0
文件: Program.cs 项目: girish66/REM
        private static void ConfigureServiceLocator(IContainer container)
        {
            var structureMapPillarContainer = new Pillar.IoC.StructureMap.Container(container);

            IoC.SetContainerProvider(() => structureMapPillarContainer);
            container.Configure(c => c.For <Pillar.Common.InversionOfControl.IContainer> ().Singleton().Use(IoC.CurrentContainer));
        }
示例#10
0
        private void RegisterIRequestHandlerOfGetRequestDtoByKey(IContainer container)
        {
            var assemblyLocator = container.GetInstance <IAssemblyLocator>();
            var assemblies      = assemblyLocator.LocateWebServiceAssemblies();

            foreach (var assembly in assemblies)
            {
                Logger.Debug("Registering IRequestHandler<GetDtoRequestByKey<TDto>> instance in DI container: {0}.", assembly);

                var dtoTypes = from dtoType in assembly.GetTypes()
                               where dtoType.IsSubclassOf(typeof(KeyedDataTransferObject)) && !dtoType.IsAbstract
                               select dtoType;
                foreach (var dtoType in dtoTypes)
                {
                    var openGetDtoRequestType   = typeof(GetDtoRequest <>);
                    var closedGetDtoRequestType = openGetDtoRequestType.MakeGenericType(dtoType);

                    var openGetDtoByKeyRequestHandlerType   = typeof(GetDtoByKeyRequestHandler <>);
                    var closedGetDtoByKeyRequestHandlerType =
                        openGetDtoByKeyRequestHandlerType.MakeGenericType(dtoType);

                    var openRequestHandlerInterfaceType = typeof(IRequestHandler <>);
                    var closedGetDtoByKeyRequestHandlerInterfaceType =
                        openRequestHandlerInterfaceType.MakeGenericType(closedGetDtoRequestType);

                    if (!container.Model.HasDefaultImplementationFor(closedGetDtoByKeyRequestHandlerInterfaceType))
                    {
                        container.Configure(
                            c =>
                            c.For(closedGetDtoByKeyRequestHandlerInterfaceType).Use(
                                p => PillarIoC.CurrentContainer.Resolve(closedGetDtoByKeyRequestHandlerType)));
                    }
                }
            }
        }
示例#11
0
        /// <summary>
        /// Configures the security.
        /// </summary>
        /// <param name="appContainer">The app container.</param>
        protected virtual void ConfigureSecurity(IContainer appContainer)
        {
            appContainer.Configure(c => c.For <ICurrentUserPermissionService>().Use <CurrentUserPermissionService>());
            var accessCtrlMgr         = appContainer.GetInstance <IAccessControlManager> ();
            var permissionDescriptors = appContainer.GetAllInstances <IPermissionDescriptor> ();

            accessCtrlMgr.RegisterPermissionDescriptor(permissionDescriptors.ToArray());
        }
示例#12
0
        /// <summary>
        /// Configures the raven db.
        /// </summary>
        /// <param name="container">The container.</param>
        protected virtual void ConfigureRavenDb(IContainer container)
        {
            ForceLoadingRavenDbAssemblies();
            var appsettingsProvider = container.GetInstance <IConfigurationPropertiesProvider> ();
            var ravenDbUrl          = appsettingsProvider.GetProperty("RavenDBUrl");
            var runInMemory         = appsettingsProvider.GetProperty("RavenDBRunInMemory");

            IDocumentStore store = runInMemory.ToLower() == "true" ?
                                   new EmbeddableDocumentStore {
                RunInMemory = true
            } : new DocumentStore {
                Url = ravenDbUrl
            };

            store.Initialize();
            container.Configure(c => c.For <IDocumentStore> ().Singleton().Use(store));

            RegisterDocumentSessionProvider(container);
            container.Configure(c => c.For <IDocumentSessionProvider> ().HttpContextScoped().Use <DocumentSessionProvider> ());
        }
        public MaintainProductConfigurationTests()
        {
            var mockSession = new Mock<ISessionState>();
            mockSession.Setup(x => x.Store(It.IsAny<string>(), It.IsAny<object>())).Callback<string, object>(
                    (x, y) => _sessionStore[x] = y);

            mockSession.Setup(x => x.Get(It.IsAny<string>())).Returns<string>(x => 
            {
                object result = null;
                _sessionStore.TryGetValue(x, out result);
                return result;
            });

            var provider = new SessionDataProvider<ProductConfigSessionData>(mockSession.Object);
            
            _container = new Container();
            _container.Configure(x => x.For<ISessionDataProvider<ProductConfigSessionData>>().Use(() => provider));
        }
示例#14
0
        private static void InitializeAndRegisterPersistenceStuff( IContainer container )
        {
            var configurationProvider = container.GetInstance<IConfigurationProvider> ();
            var configuration = configurationProvider.Configure ().GetEnumerator ().Current;
            configuration.SetProperty (
                Environment.CurrentSessionContextClass,
                "uNhAddIns.SessionEasier.Contexts.ThreadLocalSessionContext, uNhAddIns" );
            var sessionFactoryProvider = new SessionFactoryProvider ( configurationProvider );
            sessionFactoryProvider.Initialize ();

            container.Configure ( x => x.For<ISessionFactoryProvider> ().Singleton ().Use ( sessionFactoryProvider ) );
            container.Configure ( x => x.For<ISessionProvider> ().Use<SessionProvider> () );
        }
示例#15
0
 public void Register <T>(T instance)
     where T : class
 {
     _container.Configure(x => x.For <T>().Use(instance));
 }
示例#16
0
        public void Register(Type componentType, Type implementationType, Lifestyle lifeStyle)
        {
            structureMapContainer.Configure(x => x.For(componentType).LifecycleIs(lifeStyleMappings[lifeStyle]).Use(implementationType));

            OverrideConstructorResolvingWhenUsingRequestProcessorProxy(implementationType);
        }
示例#17
0
 /// <summary>
 /// Registers the domain event service.
 /// </summary>
 /// <param name="container">The container.</param>
 protected virtual void RegisterDomainEventService(IContainer container)
 {
     //Domain Event Service - per request scope
     container.Configure(c => c.For <IDomainEventService>().HttpContextScoped().Use <DomainEventService>());
 }
示例#18
0
 /// <summary>
 ///     Registers the domain event service.
 /// </summary>
 /// <param name="container">The container.</param>
 protected virtual void RegisterDomainEventService(IContainer container)
 {
     //Domain Event Service - per request scope
     container.Configure(c => c.For <ICommitDomainEventService>().Singleton().Use <CommitDomainEventService>());
     container.Configure(c => c.For <IDomainEventService>().Use(context => context.GetInstance <ICommitDomainEventService>()));
 }
示例#19
0
 private static void ConfigureServiceLocator( IContainer container )
 {
     var structureMapPillarContainer = new Pillar.IoC.StructureMap.Container ( container );
     IoC.SetContainerProvider ( () => structureMapPillarContainer );
     container.Configure ( c => c.For<Pillar.Common.InversionOfControl.IContainer> ().Singleton ().Use ( IoC.CurrentContainer ) );
 }
示例#20
0
        /// <summary>
        /// Configures the raven db.
        /// </summary>
        /// <param name="container">The container.</param>
        protected virtual void ConfigureRavenDb(IContainer container)
        {
            ForceLoadingRavenDbAssemblies ();
            var appsettingsProvider = container.GetInstance<IConfigurationPropertiesProvider> ();
            var ravenDbUrl = appsettingsProvider.GetProperty ( "RavenDBUrl" );
            var runInMemory = appsettingsProvider.GetProperty ( "RavenDBRunInMemory" );

            IDocumentStore store = runInMemory.ToLower () == "true" ?
                                                                        new EmbeddableDocumentStore { RunInMemory = true } : new DocumentStore { Url = ravenDbUrl };

            store.Initialize ();
            container.Configure ( c => c.For<IDocumentStore> ().Singleton ().Use ( store ) );

            RegisterDocumentSessionProvider ( container );
            container.Configure ( c => c.For<IDocumentSessionProvider> ().HttpContextScoped ().Use<DocumentSessionProvider> () );
        }
示例#21
0
        private void RegisterIRequestHandlerOfGetRequestDtoByKey(IContainer container)
        {
            var assemblyLocator = container.GetInstance<IAssemblyLocator>();
            var assemblies = assemblyLocator.LocateWebServiceAssemblies();

            foreach (var assembly in assemblies)
            {
                Logger.Debug("Registering IRequestHandler<GetDtoRequestByKey<TDto>> instance in DI container: {0}.", assembly);

                var dtoTypes = from dtoType in assembly.GetTypes()
                               where dtoType.IsSubclassOf(typeof(KeyedDataTransferObject)) && !dtoType.IsAbstract
                               select dtoType;
                foreach (var dtoType in dtoTypes)
                {
                    var openGetDtoRequestType = typeof(GetDtoRequest<>);
                    var closedGetDtoRequestType = openGetDtoRequestType.MakeGenericType(dtoType);

                    var openGetDtoByKeyRequestHandlerType = typeof(GetDtoByKeyRequestHandler<>);
                    var closedGetDtoByKeyRequestHandlerType =
                        openGetDtoByKeyRequestHandlerType.MakeGenericType(dtoType);

                    var openRequestHandlerInterfaceType = typeof(IRequestHandler<>);
                    var closedGetDtoByKeyRequestHandlerInterfaceType =
                        openRequestHandlerInterfaceType.MakeGenericType(closedGetDtoRequestType);

                    if (!container.Model.HasDefaultImplementationFor(closedGetDtoByKeyRequestHandlerInterfaceType))
                    {
                        container.Configure(
                            c =>
                            c.For(closedGetDtoByKeyRequestHandlerInterfaceType).Use(
                                p => PillarIoC.CurrentContainer.Resolve(closedGetDtoByKeyRequestHandlerType)));
                    }
                }
            }
        }
示例#22
0
 /// <summary>
 /// Configures the security.
 /// </summary>
 /// <param name="appContainer">The app container.</param>
 protected virtual void ConfigureSecurity( IContainer appContainer )
 {
     appContainer.Configure ( c => c.For<ICurrentUserPermissionService>().Use<CurrentUserPermissionService>() );
     var accessCtrlMgr = appContainer.GetInstance<IAccessControlManager> ();
     var permissionDescriptors = appContainer.GetAllInstances<IPermissionDescriptor> ();
     accessCtrlMgr.RegisterPermissionDescriptor ( permissionDescriptors.ToArray () );
 }