Open
Description
Description
Injecting into a keyed service should prioritize keyed service.
Reproduction Steps
var services = new ServiceCollection();
services.AddSingleton(_ => new A("Default"))
.AddKeyedSingleton(KeyedService.AnyKey, (_, _) => new A("AnyKey"))
.AddKeyedSingleton("Keyed", (_, _) => new A("Keyed"))
.AddSingleton<B>().AddKeyedSingleton<B>(KeyedService.AnyKey);
var provider = services.BuildServiceProvider();
provider.GetRequiredService<B>().A.Write();
provider.GetRequiredKeyedService<B>("Keyed").A.Write();
provider.GetRequiredKeyedService<B>(new()).A.Write();
class A(object a)
{
public void Write() => Console.WriteLine(a);
}
class B(A a)
{
public A A { get; } = a;
}
Expected behavior
Default
Keyed
AnyKey
Actual behavior
Default
Default
Default
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
No response