@@ -22,51 +22,45 @@ IEnumerator IEnumerable.GetEnumerator()
2222 return GetEnumerator ( ) ;
2323 }
2424
25- public IDisposable Add ( IJsonRpcHandler handler )
25+ public IDisposable Add ( params IJsonRpcHandler [ ] handlers )
2626 {
27- //var type = handler.GetType();
27+ return Add ( handlers . AsEnumerable ( ) ) ;
28+ }
2829
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 )
3334 {
34- var @interface = GetHandlerInterface ( implementedInterface ) ;
35- var registration = UnwrapGenericType ( typeof ( IRegistration < > ) , implementedInterface ) ;
36- var capability = UnwrapGenericType ( typeof ( ICapability < > ) , implementedInterface ) ;
37-
38- Type @params = null ;
39- if ( @interface . GetTypeInfo ( ) . IsGenericType )
35+ foreach ( var implementedInterface in handler . GetType ( ) . GetTypeInfo ( )
36+ . ImplementedInterfaces
37+ . Where ( x => ! string . IsNullOrWhiteSpace ( LspHelper . GetMethodName ( x ) ) ) )
4038 {
41- @params = @interface . GetTypeInfo ( ) . GetGenericArguments ( ) [ 0 ] ;
39+ var @interface = GetHandlerInterface ( implementedInterface ) ;
40+ var registration = UnwrapGenericType ( typeof ( IRegistration < > ) , implementedInterface ) ;
41+ var capability = UnwrapGenericType ( typeof ( ICapability < > ) , implementedInterface ) ;
42+
43+ Type @params = null ;
44+ if ( @interface . GetTypeInfo ( ) . IsGenericType )
45+ {
46+ @params = @interface . GetTypeInfo ( ) . GetGenericArguments ( ) [ 0 ] ;
47+ }
48+
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 ) ) ;
57+
58+ descriptors . Add ( h ) ;
59+ _handlers . Add ( h ) ;
4260 }
43-
44- var h = new HandlerDescriptor (
45- LspHelper . GetMethodName ( implementedInterface ) ,
46- handler ,
47- @interface ,
48- @params ,
49- registration ,
50- capability ,
51- ( ) => _handlers . RemoveWhere ( instance => instance . Handler == handler ) ) ;
52-
53- handlers . Add ( h ) ;
5461 }
5562
56- foreach ( var a in handlers )
57- _handlers . Add ( a ) ;
58-
59- return new ImutableDisposable ( handlers ) ;
60- }
61-
62- public IEnumerable < ILspHandlerDescriptor > Get ( IJsonRpcHandler handler )
63- {
64- return _handlers . Where ( instance => instance . Handler == handler ) ;
65- }
66-
67- public IEnumerable < ILspHandlerDescriptor > Get ( string method )
68- {
69- return _handlers . Where ( instance => instance . Method == method ) ;
63+ return new ImutableDisposable ( descriptors ) ;
7064 }
7165
7266 private static readonly Type [ ] HandlerTypes = { typeof ( INotificationHandler ) , typeof ( INotificationHandler < > ) , typeof ( IRequestHandler < > ) , typeof ( IRequestHandler < , > ) , } ;
@@ -96,4 +90,4 @@ private Type UnwrapGenericType(Type genericType, Type type)
9690 ? . GetGenericArguments ( ) [ 0 ] ;
9791 }
9892 }
99- }
93+ }
0 commit comments