@@ -40,12 +40,22 @@ private static MethodInfo GetMethod(string name)
40
40
return typeof ( SideCarAspect ) . GetMethod ( name , BindingFlags . NonPublic | BindingFlags . Static ) ;
41
41
}
42
42
43
- private object CallAsyncMethod ( IServiceProvider serviceProvider , Type retType , string methodName , Func < object [ ] , object > target , object [ ] args )
43
+
44
+ private ( IConversationSideCar ? , MethodInfo ? ) GetSideCarMethod ( IServiceProvider serviceProvider , string methodName , object [ ] args )
44
45
{
45
46
var sidecar = serviceProvider . GetService < IConversationSideCar > ( ) ;
46
- var sidecarMethod = sidecar ? . GetType ( ) ? . GetMethod ( methodName , BindingFlags . Public | BindingFlags . Instance ) ;
47
+ var paramTypes = args . Select ( x => x . GetType ( ) ) . ToList ( ) ;
48
+ var sidecarMethod = sidecar ? . GetType ( ) ? . GetMethods ( BindingFlags . Public | BindingFlags . Instance )
49
+ . FirstOrDefault ( x => x . Name == methodName && x . GetParameters ( ) . Select ( p => p . ParameterType ) . SequenceEqual ( paramTypes ) ) ;
50
+
51
+ return ( sidecar , sidecarMethod ) ;
52
+ }
47
53
54
+ private object CallAsyncMethod ( IServiceProvider serviceProvider , Type retType , string methodName , Func < object [ ] , object > target , object [ ] args )
55
+ {
48
56
object value ;
57
+
58
+ var ( sidecar , sidecarMethod ) = GetSideCarMethod ( serviceProvider , methodName , args ) ;
49
59
var enabled = sidecar != null && sidecar . IsEnabled ( ) && sidecarMethod != null ;
50
60
51
61
if ( retType == typeof ( void ) )
@@ -77,11 +87,10 @@ private object CallAsyncMethod(IServiceProvider serviceProvider, Type retType, s
77
87
78
88
private object CallSyncMethod ( IServiceProvider serviceProvider , Type retType , string methodName , Func < object [ ] , object > target , object [ ] args )
79
89
{
80
- var sidecar = serviceProvider . GetService < IConversationSideCar > ( ) ;
81
- var sidecarMethod = sidecar ? . GetType ( ) ? . GetMethod ( methodName , BindingFlags . Public | BindingFlags . Instance ) ;
82
-
83
90
object value ;
84
- var enabled = sidecar != null && sidecarMethod != null && sidecar . IsEnabled ( ) ;
91
+
92
+ var ( sidecar , sidecarMethod ) = GetSideCarMethod ( serviceProvider , methodName , args ) ;
93
+ var enabled = sidecar != null && sidecar . IsEnabled ( ) && sidecarMethod != null ;
85
94
86
95
if ( retType == typeof ( void ) )
87
96
{
0 commit comments