//Func<CustomUnitOfWorkSettings, ITransactionManager> getTransactionManager;

        /// <summary>
        /// Configures <see cref="UnitOfWorkScope"/> settings.
        /// </summary>
        /// <param name="containerAdapter">The <see cref="IContainerAdapter"/> instance.</param>
        public void Configure(IContainerAdapter containerAdapter)
        {
            var settings = new CustomUnitOfWorkSettings()
            {
                AutoCompleteScope = _autoCompleteScope, DefaultIsolation = _defaultIsolation
            };

            containerAdapter.RegisterInstance(settings);
            containerAdapter.RegisterSingleton <IUnityUnitOfWorkManager, UnityUnitOfWorkManager>();
            //containerAdapter.RegisterInstance<ITransactionManager>(getTransactionManager(settings));
            containerAdapter.RegisterInstance <IUnitOfWorkGuid>(new UnitOfWorkGuid());
            containerAdapter.RegisterSingleton <IUnitOfWorkScopeFactory, UnityUnitOfWorkScopeFactory>();
            containerAdapter.Register <IUnitOfWorkScope, UnityUnitOfWorkScope>();

            //UnitOfWorkSettings.AutoCompleteScope = _autoCompleteScope;
            //UnitOfWorkSettings.DefaultIsolation = _defaultIsolation;
            if (_useBusinessTransaction)
            {
                containerAdapter.RegisterSingleton <IBusinessTransactionObservable, BusinessTransactionSubjectWrapper>();
                containerAdapter.RegisterSingleton <IBusinessTransactionSubscriber, BusinessTransactionSubjectWrapper>();
                containerAdapter.RegisterInstance <IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(() => new BusinessTransactionSubject()));
            }
            else
            {
                var subject = new StubTransactionSubject();
                containerAdapter.RegisterInstance <IBusinessTransactionObservable>(subject);
                containerAdapter.RegisterInstance <IBusinessTransactionSubscriber>(subject);
                containerAdapter.RegisterInstance <IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(() => subject));
            }



            //IBusinessTransactionSubject subject = !_useBusinessTransaction? new StubTransactionSubject(): new BusinessTransactionSubjectWrapper();
            //containerAdapter.RegisterInstance<IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(!_useBusinessTransaction ? () => subject : () => new BusinessTransactionSubject()));
        }
 public IApplicationController RegisterSingletonView <TView, TImplementation>()
     where TView : IView
     where TImplementation : class, TView
 {
     _container.RegisterSingleton <TView, TImplementation>();
     return(this);
 }
예제 #3
0
        private void RegisterDefaults()
        {
            _containerAdapter.RegisterInstance <IContainerProvider>(_containerAdapter);

            _containerAdapter.Register(typeof(IMigrationLocator <>), typeof(TypeMigrationDependencyLocator <>));

            _containerAdapter.RegisterInstance <IMongoMigrationSettings>(_settings);

            _containerAdapter.RegisterSingleton <ICollectionLocator, CollectionLocator>();
            _containerAdapter.RegisterSingleton <IDatabaseTypeMigrationDependencyLocator, DatabaseTypeMigrationDependencyLocator>();
            _containerAdapter.RegisterSingleton <IRuntimeVersionLocator, RuntimeVersionLocator>();
            _containerAdapter.RegisterSingleton <IStartUpVersionLocator, StartUpVersionLocator>();

            _containerAdapter.Register <IDocumentVersionService, DocumentVersionService>();
            _containerAdapter.Register <IDatabaseVersionService, DatabaseVersionService>();
            _containerAdapter.Register <IMigrationInterceptorFactory, MigrationInterceptorFactory>();
            _containerAdapter.Register <DocumentVersionSerializer, DocumentVersionSerializer>();

            _containerAdapter.Register <IStartUpDocumentMigrationRunner, StartUpDocumentMigrationRunner>();
            _containerAdapter.Register <IDocumentMigrationRunner, DocumentMigrationRunner>();
            _containerAdapter.Register <IMigrationInterceptorProvider, MigrationInterceptorProvider>();

            _containerAdapter.Register <IStartUpDatabaseMigrationRunner, StartUpDatabaseMigrationRunner>();
            _containerAdapter.Register <IDatabaseMigrationRunner, DatabaseMigrationRunner>();

            _containerAdapter.Register <IMongoMigration, MongoMigration>();
        }
예제 #4
0
        public void LazyanBeUsedToResolveCircularDepenendency(IContainerAdapter adapter)
        {
            adapter.RegisterSingleton <ServiceWithRecursiveLazyDependency1>();
            adapter.RegisterSingleton <ServiceWithRecursiveLazyDependency2>();

            var resolved1 = adapter.Resolve <ServiceWithRecursiveLazyDependency1>();
            var resolved2 = adapter.Resolve <ServiceWithRecursiveLazyDependency2>();

            Assert.Same(resolved2, resolved1.Dependency);
            Assert.Same(resolved1, resolved2.Dependency);
        }
예제 #5
0
        public void LazyanBeUsedToResolveCircularDepenendency(IContainerAdapter adapter)
        {
            adapter.RegisterSingleton<ServiceWithRecursiveLazyDependency1>();
            adapter.RegisterSingleton<ServiceWithRecursiveLazyDependency2>();

            var resolved1 = adapter.Resolve<ServiceWithRecursiveLazyDependency1>();
            var resolved2 = adapter.Resolve<ServiceWithRecursiveLazyDependency2>();

            Assert.Same(resolved2, resolved1.Dependency);
            Assert.Same(resolved1, resolved2.Dependency);
        }
예제 #6
0
        public void SingletonLifetime(IContainerAdapter adapter)
        {
            adapter.RegisterSingleton <IService, IndependentService>();
            var instance1 = adapter.Resolve <IService>();
            var instance2 = adapter.Resolve <IService>();

            Assert.Same(instance1, instance2);
        }
예제 #7
0
        public void SingletonLifetime(IContainerAdapter adapter)
        {
            adapter.RegisterSingleton<IService, IndependentService>();
            var instance1 = adapter.Resolve<IService>();
            var instance2 = adapter.Resolve<IService>();

            Assert.Same(instance1, instance2);
        }
예제 #8
0
        public void TransientFactoryUsedBySingletonStillCreatesTransient(IContainerAdapter adapter)
        {
            adapter.RegisterTransient <IService, IndependentService>();
            adapter.RegisterSingleton <ServiceWithFuncConstructorDependency>();

            var service = adapter.Resolve <ServiceWithFuncConstructorDependency>();
            var first   = service.Factory();
            var second  = service.Factory();

            Assert.NotSame(first, second);
        }
예제 #9
0
        protected override void RegisterDependencies(IContainerAdapter container)
        {
            container.RegisterSingleton <LoginViewModel>();
            container.RegisterSingleton <LoginView>();

            container.RegisterSingleton <HomeViewModel>();
            container.RegisterSingleton <HomeView>();

            container.RegisterType <EventToCommandViewModel>();
            container.RegisterType <EventToCommandView>();

            container.RegisterType <DialogViewModel>();
            container.RegisterType <DialogView>();

            container.RegisterType <TemplateSelectorViewModel>();
            container.RegisterType <TemplateSelectorView>();

            container.RegisterType <MessengerViewModel>();
            container.RegisterType <MessengerView>();
        }
예제 #10
0
        public void RegisterSingletonFactory()
        {
            _container = new PillarDefaultIoc();

            _container.RegisterSingleton <IFoo>(() => new Foo());

            var foo1 = _container.Resolve <IFoo>();
            var foo2 = _container.Resolve <IFoo>();

            Assert.Same(foo1, foo2);
        }
        /// <summary>
        /// Called by NCommon <see cref="Configure"/> to configure state storage.
        /// </summary>
        /// <param name="containerAdapter">The <see cref="IContainerAdapter"/> instance that can be
        /// used to register state storage components.</param>
        public void Configure(IContainerAdapter containerAdapter)
        {
            if (_customSessionType != null)
            {
                containerAdapter.Register(typeof(ISessionState), _customSessionType);
            }
            else
            {
                containerAdapter.Register <ISessionStateSelector, DefaultSessionStateSelector>();
                containerAdapter.Register <ISessionState, SessionStateWrapper>();
            }

            if (_customLocalStateType != null)
            {
                containerAdapter.Register(typeof(ILocalState), _customLocalStateType);
            }
            else
            {
                containerAdapter.Register <ILocalStateSelector, DefaultLocalStateSelector>();
                containerAdapter.Register <ILocalState, LocalStateWrapper>();
            }
            if (_customCacheType != null)
            {
                containerAdapter.Register(typeof(ICacheState), _customCacheType);
            }
            else
            {
                containerAdapter.Register <ICacheState, HttpRuntimeCache>();
            }
            if (_customApplicationStateType != null)
            {
                containerAdapter.RegisterSingleton(typeof(IApplicationState), _customApplicationStateType);
            }
            else
            {
                containerAdapter.RegisterSingleton <IApplicationState, ApplicationState>();
            }

            containerAdapter.Register <IState, State.Impl.State>();
        }
        public void FactoryNoReuseBetweenRequests(IContainerAdapter adapter)
        {
            adapter.RegisterPerWebRequest<IService, IndependentService>();
            adapter.RegisterSingleton<ServiceWithFuncConstructorDependency>();

            var service = adapter.Resolve<ServiceWithFuncConstructorDependency>();

            BeginRequest(adapter);
            var first = service.Factory();
            EndRequest(adapter);

            BeginRequest(adapter);
            var second = service.Factory();
            EndRequest(adapter);

            Assert.NotSame(first, second);
        }
        public void FactoryNoReuseBetweenRequests(IContainerAdapter adapter)
        {
            adapter.RegisterPerWebRequest <IService, IndependentService>();
            adapter.RegisterSingleton <ServiceWithFuncConstructorDependency>();

            var service = adapter.Resolve <ServiceWithFuncConstructorDependency>();

            BeginRequest(adapter);
            var first = service.Factory();

            EndRequest(adapter);

            BeginRequest(adapter);
            var second = service.Factory();

            EndRequest(adapter);

            Assert.NotSame(first, second);
        }
예제 #14
0
        internal static void RegisterPillarDependencies(this IContainerAdapter container)
        {
            // service registration
            container.RegisterSingleton(container); // the container itself can be injected

            container.RegisterSingleton <IDialogProvider, DialogService>();
            container.RegisterSingleton <IViewFactory, ViewFactory>();
            container.RegisterSingleton <INavigator, Navigator>();
            container.RegisterSingleton <IMessenger, Messenger>();

            // current page resolver
            container.RegisterType <Func <Page> >(() => GetCurrentPage);

            // current PageProxy
            container.RegisterSingleton <IPage, PageProxy>();
        }
예제 #15
0
        // singletons generics

        public static void RegisterSingleton <TInterface>(this IContainerAdapter adapter)
            where TInterface : class
        {
            adapter.RegisterSingleton <TInterface, TInterface>();
        }
예제 #16
0
 public static void RegisterTransient <TService>(this IContainerAdapter container)
 {
     container.RegisterSingleton <TService, TService>();
 }
예제 #17
0
 public static void RegisterSingleton <TService, TImplementation>(this IContainerAdapter container)
     where TImplementation : TService
 {
     container.RegisterSingleton(typeof(TService), typeof(TImplementation));
 }
예제 #18
0
 public static void RegisterSingleton <TInterface>(this IContainerAdapter adapter, TInterface implementationInstance)
     where TInterface : class
 {
     adapter.RegisterSingleton(typeof(TInterface), implementationInstance);
 }
예제 #19
0
 public static void RegisterSingleton <TInterface>(this IContainerAdapter adapter, Func <TInterface> implementationFactory)
     where TInterface : class
 {
     adapter.RegisterSingleton(typeof(TInterface), implementationFactory);
 }
예제 #20
0
 public static void RegisterSingleton <TFrom, TTo>(this IContainerAdapter adapter)
     where TFrom : class
     where TTo : class, TFrom
 {
     adapter.RegisterSingleton(typeof(TFrom), typeof(TTo));
 }
예제 #21
0
        public void TransientFactoryUsedBySingletonStillCreatesTransient(IContainerAdapter adapter)
        {
            adapter.RegisterTransient<IService, IndependentService>();
            adapter.RegisterSingleton<ServiceWithFuncConstructorDependency>();

            var service = adapter.Resolve<ServiceWithFuncConstructorDependency>();
            var first = service.Factory();
            var second = service.Factory();

            Assert.NotSame(first, second);
        }