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>()); }