@@ -6,23 +6,6 @@ namespace McpDotNetSample.Asp.Services;
66/// </summary>
77public class InMemoryGithubUserRepository : IGithubUserRepository
88{
9- // Custom comparer for case-insensitive tuple comparison
10- private class NameComparer : IEqualityComparer < ( string FirstName , string LastName ) >
11- {
12- public bool Equals ( ( string FirstName , string LastName ) x , ( string FirstName , string LastName ) y )
13- {
14- return string . Equals ( x . FirstName , y . FirstName , StringComparison . OrdinalIgnoreCase ) &&
15- string . Equals ( x . LastName , y . LastName , StringComparison . OrdinalIgnoreCase ) ;
16- }
17-
18- public int GetHashCode ( ( string FirstName , string LastName ) obj )
19- {
20- return HashCode . Combine (
21- obj . FirstName ? . ToLowerInvariant ( ) ,
22- obj . LastName ? . ToLowerInvariant ( ) ) ;
23- }
24- }
25-
269 // Dictionary mapping: (FirstName, LastName) -> GitHubUsername
2710 private readonly Dictionary < ( string FirstName , string LastName ) , string > _users = new ( new NameComparer ( ) )
2811 {
@@ -40,7 +23,7 @@ public int GetHashCode((string FirstName, string LastName) obj)
4023
4124 public IEnumerable < string > FindByFirstName ( string firstName )
4225 {
43- ArgumentNullException . ThrowIfNullOrWhiteSpace ( firstName ) ;
26+ ArgumentException . ThrowIfNullOrWhiteSpace ( firstName ) ;
4427
4528 return _users
4629 . Where ( kvp => kvp . Key . FirstName . Equals ( firstName , StringComparison . OrdinalIgnoreCase ) )
@@ -50,7 +33,7 @@ public IEnumerable<string> FindByFirstName(string firstName)
5033
5134 public IEnumerable < string > FindByLastName ( string lastName )
5235 {
53- ArgumentNullException . ThrowIfNullOrWhiteSpace ( lastName ) ;
36+ ArgumentException . ThrowIfNullOrWhiteSpace ( lastName ) ;
5437
5538 return _users
5639 . Where ( kvp => kvp . Key . LastName . Equals ( lastName , StringComparison . OrdinalIgnoreCase ) )
@@ -60,10 +43,27 @@ public IEnumerable<string> FindByLastName(string lastName)
6043
6144 public string ? FindByFullName ( string firstName , string lastName )
6245 {
63- ArgumentNullException . ThrowIfNullOrWhiteSpace ( firstName ) ;
64- ArgumentNullException . ThrowIfNullOrWhiteSpace ( lastName ) ;
46+ ArgumentException . ThrowIfNullOrWhiteSpace ( firstName ) ;
47+ ArgumentException . ThrowIfNullOrWhiteSpace ( lastName ) ;
6548
6649 var key = ( firstName , lastName ) ;
6750 return _users . TryGetValue ( key , out var username ) ? username : null ;
6851 }
52+
53+ // Custom comparer for case-insensitive tuple comparison
54+ private class NameComparer : IEqualityComparer < ( string FirstName , string LastName ) >
55+ {
56+ public bool Equals ( ( string FirstName , string LastName ) x , ( string FirstName , string LastName ) y )
57+ {
58+ return string . Equals ( x . FirstName , y . FirstName , StringComparison . OrdinalIgnoreCase ) &&
59+ string . Equals ( x . LastName , y . LastName , StringComparison . OrdinalIgnoreCase ) ;
60+ }
61+
62+ public int GetHashCode ( ( string FirstName , string LastName ) obj )
63+ {
64+ return HashCode . Combine (
65+ obj . FirstName ? . ToLowerInvariant ( ) ,
66+ obj . LastName ? . ToLowerInvariant ( ) ) ;
67+ }
68+ }
6969}
0 commit comments