Skip to content

Commit e9d0dbe

Browse files
CopilotAGiorgetti
andcommitted
Fix: use Equals for keyed service key comparison instead of reference equality
Co-authored-by: AGiorgetti <246067+AGiorgetti@users.noreply.github.com>
1 parent 31fa72c commit e9d0dbe

2 files changed

Lines changed: 18 additions & 15 deletions

File tree

src/Mammoth.Extensions.DependencyInjection.Tests/ServiceCollectionExtensions.Registration.Tests.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,33 +97,36 @@ public void IsSingletonServiceRegistered_Returns_True_When_Registered_As_Singlet
9797
public void IsKeyedTransientServiceRegistered_Returns_True_When_Registered_As_Keyed_Transient()
9898
{
9999
var serviceCollection = new ServiceCollection();
100-
serviceCollection.AddKeyedTransient<TestService>("key");
100+
var key = Guid.NewGuid();
101+
serviceCollection.AddKeyedTransient<TestService>(key);
101102

102-
Assert.IsTrue(serviceCollection.IsKeyedTransientServiceRegistered<TestService>("key"));
103-
Assert.IsFalse(serviceCollection.IsKeyedScopedServiceRegistered<TestService>("key"));
104-
Assert.IsFalse(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>("key"));
103+
Assert.IsTrue(serviceCollection.IsKeyedTransientServiceRegistered<TestService>(key));
104+
Assert.IsFalse(serviceCollection.IsKeyedScopedServiceRegistered<TestService>(key));
105+
Assert.IsFalse(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>(key));
105106
}
106107

107108
[TestMethod]
108109
public void IsKeyedScopedServiceRegistered_Returns_True_When_Registered_As_Keyed_Scoped()
109110
{
110111
var serviceCollection = new ServiceCollection();
111-
serviceCollection.AddKeyedScoped<TestService>("key");
112+
var key = Guid.NewGuid();
113+
serviceCollection.AddKeyedScoped<TestService>(key);
112114

113-
Assert.IsFalse(serviceCollection.IsKeyedTransientServiceRegistered<TestService>("key"));
114-
Assert.IsTrue(serviceCollection.IsKeyedScopedServiceRegistered<TestService>("key"));
115-
Assert.IsFalse(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>("key"));
115+
Assert.IsFalse(serviceCollection.IsKeyedTransientServiceRegistered<TestService>(key));
116+
Assert.IsTrue(serviceCollection.IsKeyedScopedServiceRegistered<TestService>(key));
117+
Assert.IsFalse(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>(key));
116118
}
117119

118120
[TestMethod]
119121
public void IsKeyedSingletonServiceRegistered_Returns_True_When_Registered_As_Keyed_Singleton()
120122
{
121123
var serviceCollection = new ServiceCollection();
122-
serviceCollection.AddKeyedSingleton<TestService>("key");
124+
var key = Guid.NewGuid();
125+
serviceCollection.AddKeyedSingleton<TestService>(key);
123126

124-
Assert.IsFalse(serviceCollection.IsKeyedTransientServiceRegistered<TestService>("key"));
125-
Assert.IsFalse(serviceCollection.IsKeyedScopedServiceRegistered<TestService>("key"));
126-
Assert.IsTrue(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>("key"));
127+
Assert.IsFalse(serviceCollection.IsKeyedTransientServiceRegistered<TestService>(key));
128+
Assert.IsFalse(serviceCollection.IsKeyedScopedServiceRegistered<TestService>(key));
129+
Assert.IsTrue(serviceCollection.IsKeyedSingletonServiceRegistered<TestService>(key));
127130
}
128131
}
129132
}

src/Mammoth.Extensions.DependencyInjection/ServiceCollectionExtensions.Registration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ public static bool IsKeyedSingletonServiceRegistered(this IServiceCollection ser
174174
}
175175

176176
var descriptors = services.GetServiceDescriptors(serviceType, isKeyedService: true)
177-
.Where(d => d.ServiceKey == serviceKey)
177+
.Where(d => Equals(d.ServiceKey, serviceKey))
178178
.ToArray();
179179
return descriptors.Length > 0 && descriptors[descriptors.Length - 1].Lifetime == ServiceLifetime.Singleton;
180180
}
@@ -210,7 +210,7 @@ public static bool IsKeyedScopedServiceRegistered(this IServiceCollection servic
210210
}
211211

212212
var descriptors = services.GetServiceDescriptors(serviceType, isKeyedService: true)
213-
.Where(d => d.ServiceKey == serviceKey)
213+
.Where(d => Equals(d.ServiceKey, serviceKey))
214214
.ToArray();
215215
return descriptors.Length > 0 && descriptors[descriptors.Length - 1].Lifetime == ServiceLifetime.Scoped;
216216
}
@@ -246,7 +246,7 @@ public static bool IsKeyedTransientServiceRegistered(this IServiceCollection ser
246246
}
247247

248248
var descriptors = services.GetServiceDescriptors(serviceType, isKeyedService: true)
249-
.Where(d => d.ServiceKey == serviceKey)
249+
.Where(d => Equals(d.ServiceKey, serviceKey))
250250
.ToArray();
251251
return descriptors.Length > 0 && descriptors[descriptors.Length - 1].Lifetime == ServiceLifetime.Transient;
252252
}

0 commit comments

Comments
 (0)