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); }
public TDbContextFactory() { _resolver = new TypesResolver(() => new[] { typeof(TestModel), typeof(Page), typeof(Section), typeof(Member), typeof(Component) }); }
public BackendFunction(IContext context, ITypesResolver resolver, IMediator mediator) { _mediator = mediator; }
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)); }
public TDbContext(DbContextOptions options, ITypesResolver typesResolver) : this(options) { _innerTypesResolver = typesResolver; }
public CommandControllerFeatureProvider(ITypesResolver typesResolver) { _typesResolver = typesResolver; }