// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); //Add Cqrs services services.AddSingleton<InProcessBus>(new InProcessBus()); services.AddSingleton<ICommandSender>(y => y.GetService<InProcessBus>()); services.AddSingleton<IEventPublisher>(y => y.GetService<InProcessBus>()); services.AddSingleton<IHandlerRegistrar>(y => y.GetService<InProcessBus>()); services.AddScoped<ISession, Session>(); services.AddSingleton<IEventStore, InMemoryEventStore>(); services.AddScoped<ICache, CQRSlite.Cache.MemoryCache>(); services.AddScoped<IRepository>(y => new CacheRepository(new Repository(y.GetService<IEventStore>()), y.GetService<IEventStore>(), y.GetService<ICache>())); services.AddTransient<IReadModelFacade, ReadModelFacade>(); //Scan for commandhandlers and eventhandlers services.Scan(scan => scan .FromAssemblies(typeof(InventoryCommandHandlers).GetTypeInfo().Assembly) .AddClasses(classes => classes.Where(x => { var allInterfaces = x.GetInterfaces(); return allInterfaces.Any(y => y.GetTypeInfo().IsGenericType && y.GetTypeInfo().GetGenericTypeDefinition() == typeof(ICommandHandler<>)) || allInterfaces.Any(y => y.GetTypeInfo().IsGenericType && y.GetTypeInfo().GetGenericTypeDefinition() == typeof(IEventHandler<>)); })) .AsSelf() .WithTransientLifetime() ); //Register bus var serviceProvider = services.BuildServiceProvider(); var registrar = new BusRegistrar(new DependencyResolver(serviceProvider)); registrar.Register(typeof(InventoryCommandHandlers)); // Add framework services. services.AddMvc(); }
public void Setup() { _locator = new TestServiceLocator(); _register = new BusRegistrar(_locator); if (TestHandleRegistrar.HandlerList.Count == 0) _register.Register(GetType()); }
public When_registering_handlers() { _locator = new TestServiceLocator(); _register = new BusRegistrar(_locator); if (TestHandleRegistrar.HandlerList.Count == 0) _register.Register(GetType()); }
private void RegisterHandlers(IServiceLocator serviceLocator) { var registrar = new BusRegistrar(serviceLocator); registrar.Register(typeof(InventoryCommandHandlers)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Register the IConfiguration instance which AppConfig binds against. services.Configure<AppConfig>(Configuration); // Add application services services.AddSingleton<IConfiguration>(Configuration); services.AddSingleton<IRepository<TransactionItemListDto>, MongoRepository<TransactionItemListDto>>(); services.AddSingleton<IRepository<Account>, MongoRepository<Account>>(); services.AddSingleton<IRepository<Security>, MongoRepository<Security>>(); services.AddSingleton<IRepository<Price>, MongoRepository<Price>>(); services.AddSingleton<IRepository<Period>, MongoRepository<Period>>(); #region CQRS services.AddMemoryCache(); //Add Cqrs services services.AddSingleton<InProcessBus>(new InProcessBus()); services.AddSingleton<ICommandSender>(y => y.GetService<InProcessBus>()); services.AddSingleton<IEventPublisher>(y => y.GetService<InProcessBus>()); services.AddSingleton<IHandlerRegistrar>(y => y.GetService<InProcessBus>()); services.AddScoped<ISession, Session>(); services.AddSingleton<IEventStore, MongoEventStore>(); services.AddScoped<ICache, CQRSlite.Cache.MemoryCache>(); services.AddScoped<IRepository>(y => new CQRSlite.Cache.CacheRepository(new Repository(y.GetService<IEventStore>()), y.GetService<IEventStore>(), y.GetService<ICache>())); services.AddTransient<IReadModelFacade, ReadModelFacade>(); //Scan for commandhandlers and eventhandlers services.Scan(scan => scan .FromAssemblies(typeof(AccountTransactionCommandHandlers).GetTypeInfo().Assembly) .AddClasses(classes => classes.Where(x => { var allInterfaces = x.GetInterfaces(); return allInterfaces.Any(y => y.GetTypeInfo().IsGenericType && y.GetTypeInfo().GetGenericTypeDefinition() == typeof(ICommandHandler<>)) || allInterfaces.Any(y => y.GetTypeInfo().IsGenericType && y.GetTypeInfo().GetGenericTypeDefinition() == typeof(IEventHandler<>)); })) .AsSelf() .WithTransientLifetime() ); //Register bus var serviceProvider = services.BuildServiceProvider(); var registrar = new BusRegistrar(new DependencyResolver(serviceProvider)); registrar.Register(typeof(AccountTransactionCommandHandlers)); //Register Mongo MongoDefaults.GuidRepresentation = MongoDB.Bson.GuidRepresentation.Standard; BsonClassMap.RegisterClassMap<TransactionCreated>(cm => { cm.AutoMap(); cm.SetIdMember(cm.GetMemberMap(c => c.ObjectId)); }); #endregion // Add framework services. services.AddMvc(); }