Beispiel #1
0
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <OpinionatedDbContext>(options => options.UseInMemoryDatabase("OpinionatedDatabase"));

            services.AddSingleton(provider => OpinionatedMapperFactory.CreateMapper());

            // Add framework services.
            services.AddMvc().AddJsonOptions(options => {
                //Serializes enums as strings instead of numbers
                options.SerializerSettings.Converters.Add(new StringEnumConverter());
            });

            var builder = new ContainerBuilder();

            builder.Populate(services);

            builder.RegisterSource(new ContravariantRegistrationSource());
            builder.RegisterAssemblyTypes(typeof(IMediator).Assembly).AsImplementedInterfaces();
            builder.RegisterAssemblyTypes(typeof(Startup).Assembly).AsImplementedInterfaces();

            builder.RegisterGeneric(typeof(RestGetListHandler <,>)).AsImplementedInterfaces();
            builder.RegisterGeneric(typeof(RestGetListRequest <,>));
            builder.RegisterGeneric(typeof(RestSingleGetHandler <,>)).AsImplementedInterfaces();
            builder.RegisterGeneric(typeof(RestSingleGetRequest <,>));
            builder.RegisterGeneric(typeof(RestPostHandler <, ,>)).AsImplementedInterfaces();
            builder.RegisterGeneric(typeof(RestPostRequest <, ,>));
            builder.RegisterGeneric(typeof(RestPutHandler <,>)).AsImplementedInterfaces();
            builder.RegisterGeneric(typeof(RestPutRequest <,>));

            builder.Register <ServiceFactory>(ctx =>
            {
                var c = ctx.Resolve <IComponentContext>();
                return(t => c.Resolve(t));
            });

            var container = builder.Build();

            return(container.Resolve <IServiceProvider>());
        }
Beispiel #2
0
 public void AssertConfigurationIsValid()
 {
     OpinionatedMapperFactory.CreateMapper().ConfigurationProvider.AssertConfigurationIsValid();
 }