/// <summary> /// /// </summary> /// <param name="args"></param> public static void Main(string[] args) { var serviceProvider = new ServiceCollection() .AddLogging() .AddTransient <IGetWeatherForecastSvc, GetWeatherForecastSvc>() .BuildServiceProvider(); ServiceLocator.SetLocatorProvider(serviceProvider); var request = new List <WeatherForecastRequestDto> { new() { ID = 2003 }, new() { ID = 2004 } }; var result = new List <WEATHER_FORECAST>(); using (var svc = new BulkServiceExecutorManager <IGetWeatherForecastSvc, WeatherForecastRequestDto>(request)) { svc.SetRequest((s, r) => s.Request = r) .AddFilter(s => s.Request.ID.xIsNotNull()) .OnExecuted(s => { result.Add(s.Result); return(true); }); } result.xForEach(item => { Console.WriteLine(item.xToJson()); }); } }
public override void Execute() { using (var svc = new BulkServiceExecutorManager <SaveConfigSvc, SaveConfigRequest>(Request)) { svc.SetRequest((o, current) => { o.Request = current; }) .AddFilter(o => { return(o.Request.xIsNotNull()); }).OnExecuted(o => { var result = o.Result; return(true); }); } }
/// <summary> /// 대량 서비스 생성을 위한 메서드 /// 비공유 인스턴스 생성을 위해 servicelocator를 사용함. /// </summary> /// <param name="requests"></param> /// <typeparam name="TServiceExecutor"></typeparam> /// <typeparam name="TRequest"></typeparam> /// <typeparam name="TResult"></typeparam> /// <returns></returns> protected IEnumerable <TResult> CreateBulkService <TServiceExecutor, TRequest, TResult>( IEnumerable <TRequest> requests) where TServiceExecutor : IServiceExecutor <TRequest, TResult> { var results = new List <TResult>(); using var bulkExecutor = new BulkServiceExecutorManager <TServiceExecutor, TRequest>(requests); bulkExecutor.SetRequest((o, c) => o.Request = c) .OnExecuted(o => { results.Add(o.Result); return(true); }); return(results); }
protected IEnumerable <TResult> CreateBulkService <TServiceExecutor, TRequest, TResult>(TServiceExecutor serviceExecutor, IEnumerable <TRequest> requests, Func <TServiceExecutor, bool> func = null) where TServiceExecutor : IServiceExecutor <TRequest, TResult> { var results = new JList <TResult>(); using var bulkExecutor = new BulkServiceExecutorManager <TServiceExecutor, TRequest>(requests); bulkExecutor.SetRequest((o, c) => o.Request = c) .AddFilter(func) .OnExecuted(o => { results.Add(o.Result); return(true); }); return(results); }