コード例 #1
0
        public static void ExecuteActivityHost <TActivity, TArguments>(this IReceiveEndpointConfigurator configurator, Uri compensateAddress,
                                                                       ILifetimeScope lifetimeScope,
                                                                       Action <IExecuteActivityConfigurator <TActivity, TArguments> > configure,
                                                                       string name = "message",
                                                                       Action <ContainerBuilder, ExecuteContext <TArguments> > configureScope = null)
            where TActivity : class, ExecuteActivity <TArguments>
            where TArguments : class
        {
            var lifetimeScopeProvider = new SingleLifetimeScopeProvider(lifetimeScope);

            var executeActivityScopeProvider = new AutofacExecuteActivityScopeProvider <TActivity, TArguments>(lifetimeScopeProvider, name, configureScope);

            var factory = new ScopeExecuteActivityFactory <TActivity, TArguments>(executeActivityScopeProvider);

            var specification = new ExecuteActivityHostSpecification <TActivity, TArguments>(factory, compensateAddress);

            configure(specification);

            configurator.AddEndpointSpecification(specification);
        }