Не думаю, что ваш код будет работать. Но вы можете попробовать, как показано ниже.
В StartUp:
services.AddSingleton<classA>();
services.AddSingleton<classB>();
services.AddTransient<Func<string, InterfaceA>>(serviceProvider => key =>
{
switch (key)
{
case "A":
return serviceProvider.GetService<classA>();
case "B":
return serviceProvider.GetService<classB>();
default:
throw new KeyNotFoundException();
}
});
В методе Caller:
public class Caller: ICaller
{
private readonly Func<string, InterfaceA> _injector;
public Caller(Func<string, InterfaceA> injector)
{
this._injector = injector;
}
public object Get()
{
return _injector("A").GetData();
}
}