@@ -194,11 +194,15 @@ private static IEnumerable<IMethodSymbol> GetMethods(INamedTypeSymbol targetSymb
194194 var methodSymbols = currentSymbol
195195 . GetMembers ( )
196196 . Where ( m => m . Kind == SymbolKind . Method )
197- . OfType < IMethodSymbol > ( )
198- . Where ( p => ! methods . ContainsKey ( p . Name ) ) ;
197+ . OfType < IMethodSymbol > ( ) ;
199198
200199 foreach ( var methodSymbol in methodSymbols )
201- methods . Add ( methodSymbol . Name , methodSymbol ) ;
200+ {
201+ var signature = BuildMethodSignature ( methodSymbol ) ;
202+
203+ if ( ! methods . ContainsKey ( signature ) )
204+ methods . Add ( signature , methodSymbol ) ;
205+ }
202206
203207 if ( ! includeBaseMethods )
204208 break ;
@@ -209,6 +213,18 @@ private static IEnumerable<IMethodSymbol> GetMethods(INamedTypeSymbol targetSymb
209213 return methods . Values ;
210214 }
211215
216+ private static string BuildMethodSignature ( IMethodSymbol method )
217+ {
218+ if ( method . Parameters . Length == 0 )
219+ return method . Name + "()" ;
220+
221+ var parts = new string [ method . Parameters . Length ] ;
222+ for ( int i = 0 ; i < method . Parameters . Length ; i ++ )
223+ parts [ i ] = method . Parameters [ i ] . Type . ToDisplayString ( ) ;
224+
225+ return method . Name + "(" + string . Join ( "," , parts ) + ")" ;
226+ }
227+
212228 private static readonly string [ ] ValidHandlerMethodNames = [
213229 "Handle" , "HandleAsync" ,
214230 "Handles" , "HandlesAsync" ,
0 commit comments