@@ -22,49 +22,45 @@ IEnumerator IEnumerable.GetEnumerator()
22
22
return GetEnumerator ( ) ;
23
23
}
24
24
25
- public IDisposable Add ( IJsonRpcHandler handler )
25
+ public IDisposable Add ( params IJsonRpcHandler [ ] handlers )
26
26
{
27
- //var type = handler.GetType();
27
+ return Add ( handlers . AsEnumerable ( ) ) ;
28
+ }
28
29
29
- var handlers = new List < HandlerDescriptor > ( ) ;
30
- foreach ( var implementedInterface in handler . GetType ( ) . GetTypeInfo ( )
31
- . ImplementedInterfaces
32
- . Where ( x => ! string . IsNullOrWhiteSpace ( LspHelper . GetMethodName ( x ) ) ) )
30
+ public IDisposable Add ( IEnumerable < IJsonRpcHandler > handlers )
31
+ {
32
+ var descriptors = new List < HandlerDescriptor > ( ) ;
33
+ foreach ( var handler in handlers )
33
34
{
34
- var @interface = GetHandlerInterface ( implementedInterface ) ;
35
- if ( @interface == null ) continue ;
36
- var registration = UnwrapGenericType ( typeof ( IRegistration < > ) , implementedInterface ) ;
37
- var capability = UnwrapGenericType ( typeof ( ICapability < > ) , implementedInterface ) ;
38
-
39
- Type @params = null ;
40
- if ( @interface . GetTypeInfo ( ) . IsGenericType )
35
+ foreach ( var implementedInterface in handler . GetType ( ) . GetTypeInfo ( )
36
+ . ImplementedInterfaces
37
+ . Where ( x => ! string . IsNullOrWhiteSpace ( LspHelper . GetMethodName ( x ) ) ) )
41
38
{
42
- @params = @interface . GetTypeInfo ( ) . GetGenericArguments ( ) [ 0 ] ;
43
- }
39
+ var @interface = GetHandlerInterface ( implementedInterface ) ;
40
+ var registration = UnwrapGenericType ( typeof ( IRegistration < > ) , implementedInterface ) ;
41
+ var capability = UnwrapGenericType ( typeof ( ICapability < > ) , implementedInterface ) ;
44
42
45
- var h = new HandlerDescriptor (
46
- LspHelper . GetMethodName ( implementedInterface ) ,
47
- handler ,
48
- @interface ,
49
- @params ,
50
- registration ,
51
- capability ,
52
- ( ) => _handlers . RemoveWhere ( instance => instance . Handler == handler ) ) ;
43
+ Type @params = null ;
44
+ if ( @interface . GetTypeInfo ( ) . IsGenericType )
45
+ {
46
+ @params = @interface . GetTypeInfo ( ) . GetGenericArguments ( ) [ 0 ] ;
47
+ }
53
48
54
- _handlers . Add ( h ) ;
55
- }
49
+ var h = new HandlerDescriptor (
50
+ LspHelper . GetMethodName ( implementedInterface ) ,
51
+ handler ,
52
+ @interface ,
53
+ @params ,
54
+ registration ,
55
+ capability ,
56
+ ( ) => _handlers . RemoveWhere ( instance => instance . Handler == handler ) ) ;
56
57
57
- return new ImutableDisposable ( handlers ) ;
58
- }
59
-
60
- public IEnumerable < ILspHandlerDescriptor > Get ( IJsonRpcHandler handler )
61
- {
62
- return _handlers . Where ( instance => instance . Handler == handler ) ;
63
- }
58
+ descriptors . Add ( h ) ;
59
+ _handlers . Add ( h ) ;
60
+ }
61
+ }
64
62
65
- public IEnumerable < ILspHandlerDescriptor > Get ( string method )
66
- {
67
- return _handlers . Where ( instance => instance . Method == method ) ;
63
+ return new ImutableDisposable ( descriptors ) ;
68
64
}
69
65
70
66
private static readonly Type [ ] HandlerTypes = { typeof ( INotificationHandler ) , typeof ( INotificationHandler < > ) , typeof ( IRequestHandler < > ) , typeof ( IRequestHandler < , > ) , } ;
0 commit comments