public List <Module> Register() { List <Module> modules = new List <Module>() { Module.RegisterInstance(new DbLiteConfig { ConnectioString = "gfdgfdfsfdsdsa" }), Module.RegisterType <IRepository <Domain.Models.Cube>, DbLiteRepositoryCube>() }; var typeController = typeof(CustomControllerBase); var typesController = Assembly.GetEntryAssembly().GetTypes().Where(p => typeController.IsAssignableFrom(p) && !p.IsAbstract && !p.IsInterface)?.ToList(); typesController?.ForEach(it => { var module = Module.RegisterType(it, it, it.Name); modules.Add(module); }); var typeaggregate = typeof(IRepository <>); var typesRepositoryAggregate = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => typeaggregate.IsAssignableFrom(p) && !p.IsAbstract && !p.IsInterface)?.ToList(); typesRepositoryAggregate?.ForEach(it => { var module = Module.RegisterType(it.BaseType, it, it.Name); modules.Add(module); }); IoC.GetInstance().RegisterInstance(IoC.GetInstance()); IoC.GetInstance().RegisterType <IDispatcher, Dispatcher>(); return(modules); }
public List<Module> Register() { List<Module> modules = new List<Module>(); var typeCommandHablder = typeof(ICommandHandler<>); var typeEventHandler = typeof(IEventHandler<>); var typeRepositoryProjection = typeof(IRepository<>); var typeApplicationService = typeof(IApplicationService<>); var typesController = Assembly.GetExecutingAssembly().GetTypes().Where(p => (typeEventHandler.IsAssignableFrom(p) || typeCommandHablder.IsAssignableFrom(p) || typeRepositoryProjection.IsAssignableFrom(p) || typeApplicationService.IsAssignableFrom(p)) && !p.IsAbstract && !p.IsInterface)?.ToList(); typesController?.ForEach(it => { var module = Module.RegisterType(it.BaseType, it, it.Name); modules.Add(module); }); IoC.GetInstance().RegisterType<IQuery<CubeQueryCondition, CubeProjection, long>,CubeQueryProjection>(); return modules; }