public static IApplicationRequirements <TApp> CreateApplicationRequirements <TApp>(string[] args, ConfigureLocalServices <TApp> localServiceConfiguration = null) where TApp : class { ConfigurationResults <TApp> config = new ConfigurationResults <TApp>(); config.builder = CreateHostBuilder <TApp>(args, localServiceConfiguration); config.myHost = config.builder.Build(); IApplicationRequirements <TApp> requirements = config.myHost.Services.GetRequiredService <IApplicationRequirements <TApp> >(); return(requirements); }
/// <summary> /// We use constructor dependency injection to the interfaces we need at runtime /// </summary> /// <param name="requirements"></param> public MyApplication(IApplicationRequirements <MyApplication> requirements, IFileStorageFacade storage, IMessageBus messsageBus, IApplicationCache applicationCache) { _requirements = requirements; _storage = storage; _messsageBus = messsageBus; _applicationCache = applicationCache; // Create a bunch of dummy requests to send requests.Add(new RegisterClientRequest { ClientName = "Ford", ConsultantName = "Tom Petty" }); requests.Add(new RegisterClientRequest { ClientName = "Ford", ConsultantName = "Bob Jones" }); requests.Add(new RegisterClientRequest { ClientName = "IBM ", ConsultantName = "Albert Einstein" }); }
/// <summary> /// Application initialization. /// </summary> /// <param name="requirements">IApplicationRequirements Supplied by DI. All required interfaces</param> /// <param name="dSuiteContext">DbContext for DSuite database</param> /// <param name="schoolContext">DbContext for School database</param> /// <param name="cars">ICarRepository Example of using repository pattern</param> /// <param name="courses">ICourseRepository Example of using repository pattern</param> /// <param name="students">IStudentsRepository Example of using repository pattern</param> /// <param name="enrollments">IEnrollmentsRepository Example of using repository pattern</param> public MyApplication(IApplicationRequirements <MyApplication> requirements, DSuiteContext dSuiteContext, SchoolContext schoolContext, ICarRepository cars, ICourseRepository courses, IStudentRepository students, IEnrollmentRepository enrollments, IDataRepository <Student, int, SchoolContext> genericStudentDataRepository ) { _requirements = requirements; _dSuite = dSuiteContext; _school = schoolContext; _cars = cars; _courses = courses; _students = students; _enrollments = enrollments; // Same as the _students interface, except it's an open generic type _genericStudentDataRepository = genericStudentDataRepository; EFCrud.InitializeLogger(_requirements.ApplicationLogger); EFHelper.InitializeLogger(_requirements.ApplicationLogger); }
/// <summary> /// We use constructor dependency injection to the interfaces we need at runtime /// </summary> /// <param name="requirements"></param> public MyApplication(IApplicationRequirements <MyApplication> requirements, IMessageBus messsageBus) { _requirements = requirements; _messsageBus = messsageBus; }
/// <summary> /// Application initialization. /// </summary> /// <param name="requirements">IApplicationRequirements contains all the other interfaces that the application needs</param> public MyApplication(IApplicationRequirements <MyApplication> requirements) { _requirements = requirements; }