Exemple #1
0
        private static ICommandDispatcher Configure(bool auditRootOnly)
        {
            // we use an enricher that simply updates a counter each time enrichment occurs
            // as enrichment only occurs when the context is created this will start at 0 when the console auditing example is first run and
            // will increment by 1 on each subsequent run
            IReadOnlyDictionary <string, object> Enricher(IReadOnlyDictionary <string, object> existing) => new Dictionary <string, object>
            {
                { "Counter", Interlocked.Increment(ref _counter) }
            };

            ServiceCollection serviceCollection = new ServiceCollection();

            IMicrosoftDependencyInjectionCommandingResolverAdapter dependencyResolver = new MicrosoftDependencyInjectionCommandingResolverAdapter(serviceCollection);

            Options options = new Options
            {
                Reset     = true, // we reset the registry because we allow repeat runs, in a normal app this isn't required
                Enrichers = new[]
                { new FunctionWrapperCommandDispatchContextEnricher(Enricher) }
            };

            dependencyResolver.AddCommanding(options)
            .Register <NestingCommandHandler>()
            .Register <OutputWorldToConsoleCommandHandler>()
            .Register <OutputBigglesToConsoleCommandHandler>();
            dependencyResolver
            .AddPreDispatchCommandingAuditor <ConsolePreDispatchAuditor>(auditRootOnly)
            .AddPostDispatchCommandingAuditor <ConsolePostDispatchAuditor>(auditRootOnly)
            .AddExecutionCommandingAuditor <ConsoleExecutionAuditor>(auditRootOnly);
            dependencyResolver.ServiceProvider = serviceCollection.BuildServiceProvider();
            return(dependencyResolver.ServiceProvider.GetService <ICommandDispatcher>());
        }
        private static ICommandDispatcher Configure(Stack <object> stack)
        {
            ServiceCollection serviceCollection = new ServiceCollection();
            IMicrosoftDependencyInjectionCommandingResolverAdapter dependencyResolver = new MicrosoftDependencyInjectionCommandingResolverAdapter(serviceCollection);
            Options options = new Options
            {
                Reset = true // we reset the registry because we allow repeat runs, in a normal app this isn't required
            };

            dependencyResolver.AddCommanding(options)
            .Register <OutputToConsoleCommand, CountResult>(() => new StackDispatcher(stack));
            dependencyResolver.ServiceProvider = serviceCollection.BuildServiceProvider();
            return(dependencyResolver.ServiceProvider.GetService <ICommandDispatcher>());
        }
        private static ICommandDispatcher Configure()
        {
            ServiceCollection serviceCollection = new ServiceCollection();
            Options           options           = new Options
            {
                Reset = true // we reset the registry because we allow repeat runs, in a normal app this isn't required
            };

            IMicrosoftDependencyInjectionCommandingResolverAdapter dependencyResolver = new MicrosoftDependencyInjectionCommandingResolverAdapter(serviceCollection);

            dependencyResolver.AddCommanding(options)
            .Register <CommandWithoutResultHandler>()
            .Register <CancellableCommandWithoutResultHandler>();

            dependencyResolver.ServiceProvider = serviceCollection.BuildServiceProvider();

            return(dependencyResolver.ServiceProvider.GetService <ICommandDispatcher>());
        }