public void Configure() { var collecionDeServicios = new ColeccionDeServicios(); ConfigureServices(collecionDeServicios); var provedorDeServicios = collecionDeServicios.EnsamblarProveedorDeServicios(); // El tipo de cosa a resolver var cosaAResolver = typeof(FieldQueryHandler); // Dame El constructor var constructor = cosaAResolver.GetConstructors().Single(); // Dame los parametros del constructor var parameters = constructor.GetParameters(); //resolver los parameteros del constructor var resolvedParameter = parameters.Select(a => provedorDeServicios.GetService(a.ParameterType)); // Instanciar var fieldQueryHandler = (FieldQueryHandler)constructor.Invoke(resolvedParameter.ToArray()); // Resultado de la operacion var result = fieldQueryHandler.Handle(new GetUserFieldsQuery(Guid.NewGuid())).GetAwaiter().GetResult(); }
public void ConfigureServices(ColeccionDeServicios tito) { tito.AddService <ILogger <WeatherService> >(a => new Logger()); tito.AddService(Logger); tito.AddService <WeatherService>(a => new WeatherService(a.GetService <InfrastructureLogger <WeatherService> >())); }