public static CacheConnectionProviderConfigurator <T, TKey> PersistInMemoryUsing <T, TKey, TBinding>(
            this StateMachineConnectionConfigurator <T, TKey, TBinding> configurator, Cache <TKey, T> cache)
            where T : StateMachine <T>
        {
            var providerConfigurator = new CacheConnectionProviderConfiguratorImpl <T, TKey, TBinding>(configurator, cache);

            return(providerConfigurator);
        }
        public static NHibernateConnectionProviderConfigurator <T, TKey> PersistUsingNHibernate <T, TKey, TBinding>(
            this StateMachineConnectionConfigurator <T, TKey, TBinding> configurator)
            where T : StateMachine <T>
        {
            var providerConfigurator = new NHibernateConnectionProviderConfiguratorImpl <T, TKey, TBinding>(configurator);

            return(providerConfigurator);
        }
        public static StateMachineConnectionConfigurator <T, TKey, TBinding> CreateNewInstanceBy <T, TKey, TBinding>(
            this StateMachineConnectionConfigurator <T, TKey, TBinding> configurator, Func <TKey, T> consumerFactory)
            where T : StateMachine <T>
            where TBinding : StateMachineBinding <T, TKey>
        {
            configurator.SetNewInstanceFactory(consumerFactory);

            return(configurator);
        }
 public CacheConnectionProviderConfiguratorImpl(StateMachineConnectionConfigurator <T, TKey, TBinding> configurator,
                                                Cache <TKey, T> cache)
     : this(configurator)
 {
     _cache = cache;
 }
        public CacheConnectionProviderConfiguratorImpl(StateMachineConnectionConfigurator <T, TKey, TBinding> configurator)
        {
            _configurator = configurator;

            _configurator.SetProviderFactory(this);
        }