Example #1
0
        ISagaRepository <T> ISagaRepositoryFactory.CreateSagaRepository <T>()
        {
            var repository = _scopeProvider.GetRequiredService <ISagaRepository <T> >();

            var scopeProvider = new DependencyInjectionSagaScopeProvider <T>(_scopeProvider);

            scopeProvider.AddScopeAction(x => x.GetOrAddPayload <IStateMachineActivityFactory>(() => new DependencyInjectionStateMachineActivityFactory()));

            return(new ScopeSagaRepository <T>(repository, scopeProvider));
        }
Example #2
0
        /// <summary>
        /// Registers a saga using the container that has the repository resolved from the container
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="configurator"></param>
        /// <param name="provider"></param>
        /// <param name="configure"></param>
        /// <returns></returns>
        public static void Saga <T>(this IReceiveEndpointConfigurator configurator, IServiceProvider provider, Action <ISagaConfigurator <T> > configure = null)
            where T : class, ISaga
        {
            var repository = provider.GetRequiredService <ISagaRepository <T> >();

            ISagaScopeProvider <T> scopeProvider = new DependencyInjectionSagaScopeProvider <T>(provider);

            var sagaRepository = new ScopeSagaRepository <T>(repository, scopeProvider);

            configurator.Saga(sagaRepository, configure);
        }
Example #3
0
        ISagaRepository <T> ISagaRepositoryFactory.CreateSagaRepository <T>(Action <ConsumeContext> scopeAction)
        {
            var repository = _serviceProvider.GetRequiredService <ISagaRepository <T> >();

            var scopeProvider = new DependencyInjectionSagaScopeProvider <T>(_serviceProvider);

            if (scopeAction != null)
            {
                scopeProvider.AddScopeAction(scopeAction);
            }

            return(new ScopeSagaRepository <T>(repository, scopeProvider));
        }