private static IPipeLineBuilder UseHandlerInterface(IPipeLineBuilder pipeline, Type handler) { return(pipeline.Use(next => { return async context => { var middleware = pipeline.HandlerProvider.GetHandler(handler); if (middleware == null) { // The factory returned null, it's a broken implementation throw new InvalidOperationException(); } try { await middleware.HandleAsync(context, next); } catch { } finally { } }; })); }
public App(IDirectoryWatcher watcher, IPipeLineBuilder <IFileInfo> pipeLineBuilder, CriticalAndCancelExceptionHandler criticalAndCancelExceptionHandler, FileDeleteHandler fileDaleteHandler, FileSendHandler fileSendHandler) { _watcher = watcher; _pipeLineBuilder = pipeLineBuilder; _criticalAndCancelExceptionHandler = criticalAndCancelExceptionHandler; _fileDaleteHandler = fileDaleteHandler; _fileSendHandler = fileSendHandler; }
public static IPipeLineBuilder UseHandler(this IPipeLineBuilder pipeline, Type handler) { if (typeof(IHandler).GetTypeInfo().IsAssignableFrom(handler.GetTypeInfo())) { return(UseHandlerInterface(pipeline, handler)); } throw new NotImplementedException("Can only handle intereface for now"); }
public static IPipeLineBuilder UseHandler <T>(this IPipeLineBuilder pipeline) { return(UseHandler(pipeline, typeof(T))); }