Ejemplo n.º 1
0
 public static IMvcBuilder UseDynamicControllers(this IMvcBuilder builder, ITypesResolver typesResolver)
 {
     return(builder.ConfigureApplicationPartManager(
                partManager =>
     {
         partManager.FeatureProviders.Add(new CommandControllerFeatureProvider(typesResolver));
     }));
 }
        public CommandControllerFeature(ITypesResolver typesResolver)
        {
            foreach (var current in typesResolver.RegisteredTypes)
            {
                Type keyType = current.GetType().GetProperties().FirstOrDefault(p => p.GetCustomAttribute <KeyAttribute>() != null).PropertyType ?? typeof(string);
                //current.GetProperties().FirstOrDefault(p => p.Name.Contains("Id")).PropertyType;

                Type apiControllerType = typeof(CommandController <,>).MakeGenericType(new Type[] { current, keyType });

                Controllers.Add(apiControllerType.GetTypeInfo());
            }
        }
        private IContext GetContext(ITypesResolver typesResolver)
        {
            var optionsBuilder = new DbContextOptionsBuilder <TDbContext <IdentityUser, IdentityRole, string> >();

            optionsBuilder.UseInMemoryDatabase("NlayerappDb");

            var context = new TDbContext <IdentityUser, IdentityRole, string>(optionsBuilder.Options, typesResolver);

            ((DbContext)context).Database.EnsureCreated();
            // ((DbContext)context).Database.Migrate();
            return(context);
        }
Ejemplo n.º 4
0
 public TDbContextFactory()
 {
     _resolver = new TypesResolver(() => new[] { typeof(TestModel), typeof(Page), typeof(Section), typeof(Member), typeof(Component) });
 }
Ejemplo n.º 5
0
 public BackendFunction(IContext context, ITypesResolver resolver, IMediator mediator)
 {
     _mediator = mediator;
 }
Ejemplo n.º 6
0
        public static IServiceCollection AddMediatRHandlers(this IServiceCollection services, ITypesResolver typesResolver)
        {
            foreach (var type in typesResolver.RegisteredTypes)
            {
                var keyType = type.GetProperties().FirstOrDefault(p => p.GetCustomAttribute <KeyAttribute>() != null)?.PropertyType ?? typeof(object);

                var requestType = typeof(CreateEntityRequest <>).MakeGenericType(type);
                var returnType  = type;

                var serviceType        = typeof(IRequestHandler <,>).MakeGenericType(requestType, returnType);
                var implementationType = typeof(CreateEntityHandler <,>).MakeGenericType(keyType, type);

                services.AddScoped(serviceType, implementationType);

                requestType = typeof(ReadEntityRequest <,>).MakeGenericType(keyType, type);
                returnType  = type;

                serviceType        = typeof(IRequestHandler <,>).MakeGenericType(requestType, returnType);
                implementationType = typeof(ReadEntityHandler <,>).MakeGenericType(keyType, type);

                services.AddScoped(serviceType, implementationType);

                requestType = typeof(ReadEntitiesRequest <>).MakeGenericType(type);
                returnType  = typeof(IEnumerable <>).MakeGenericType(type);

                serviceType        = typeof(IRequestHandler <,>).MakeGenericType(requestType, returnType);
                implementationType = typeof(ReadEntitiesHandler <>).MakeGenericType(type);

                services.AddScoped(serviceType, implementationType);

                requestType = typeof(UpdateEntityRequest <,>).MakeGenericType(keyType, type);
                returnType  = type;

                serviceType        = typeof(IRequestHandler <,>).MakeGenericType(requestType, returnType);
                implementationType = typeof(UpdateEntityHandler <,>).MakeGenericType(keyType, type);

                services.AddScoped(serviceType, implementationType);

                requestType = typeof(DeleteEntityRequest <,>).MakeGenericType(keyType, type);
                returnType  = typeof(bool);

                serviceType        = typeof(IRequestHandler <,>).MakeGenericType(requestType, returnType);
                implementationType = typeof(DeleteEntityHandler <,>).MakeGenericType(keyType, type);

                services.AddScoped(serviceType, implementationType);
            }

            services.AddMediatR(Assembly.GetEntryAssembly());
            return(services);
        }
 public void Test_Initialization()
 {
     typesResolver = GetResolver(typeof(TestModelConfig), typeof(Auditable), typeof(SoftDeletable), typeof(AuditableSoftDeletable));
 }
Ejemplo n.º 8
0
 public TDbContext(DbContextOptions options, ITypesResolver typesResolver) : this(options)
 {
     _innerTypesResolver = typesResolver;
 }
 public CommandControllerFeatureProvider(ITypesResolver typesResolver)
 {
     _typesResolver = typesResolver;
 }