static IEnumerable <ILspHandlerDescriptor> GetAllDescriptors(CompositeDisposable disposable) { return(disposable.OfType <ILspHandlerDescriptor>() .Concat(disposable.OfType <CompositeDisposable>().SelectMany(GetAllDescriptors)) .Concat(disposable.OfType <LspHandlerDescriptorDisposable>().SelectMany(GetAllDescriptors)) .Distinct()); }
static IEnumerable <IJsonRpcHandler> GetUniqueHandlers(CompositeDisposable disposable) { return(GetAllDescriptors(disposable) .Concat(disposable.OfType <CompositeDisposable>().SelectMany(GetAllDescriptors)) .Concat(disposable.OfType <LspHandlerDescriptorDisposable>().SelectMany(GetAllDescriptors)) .Select(z => z.Handler) .Distinct()); }
static IEnumerable <T> GetUniqueHandlers <T>(CompositeDisposable disposable) { return(disposable.OfType <ILspHandlerDescriptor>() .Select(z => z.Handler) .OfType <T>() .Concat(disposable.OfType <CompositeDisposable>().SelectMany(GetUniqueHandlers <T>)) .Concat(disposable.OfType <LspHandlerDescriptorDisposable>().SelectMany(GetLspHandlers <T>)) .Distinct()); }