I\'m using Autofac and would like to have multiple implementations of an interface. How can I configure Autofac so to resolve dependencies based on the current type?
Mor
4 options here: https://autofaccn.readthedocs.io/en/latest/faq/select-by-context.html
Option 1: Redesign Your Interfaces
ILoggingMessageHandler , IDoSomethingMessageHandler
Option 2: Change the Registrations
builder.Register(ctx => new FinalHandler(ctx.Resolve()));
or
builder.Register(ctx => new FinalHandler(ctx.Resolve()));
Option 3: Use Keyed Services
builder.RegisterType()
.WithParameter(
new ResolvedParameter(
(pi, ctx) => pi.ParameterType == typeof(IMessageHandler),
(pi, ctx) => ctx.ResolveKeyed("something")));
Option 4: Use Metadata
public class FinalHandler
{
public FinalHandler([WithMetadata("sendBy", "something")] IMessageHandler messageHandler) { ... }
}