コード例 #1
0
 static IEnumerable <ILspHandlerDescriptor> GetAllDescriptors(CompositeDisposable disposable)
 {
     return(disposable.OfType <ILspHandlerDescriptor>()
            .Concat(disposable.OfType <CompositeDisposable>().SelectMany(GetAllDescriptors))
            .Concat(disposable.OfType <LspHandlerDescriptorDisposable>().SelectMany(GetAllDescriptors))
            .Distinct());
 }
コード例 #2
0
 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());
 }