Vote count: 0
Note: This is similar to this Question
My Question is if I have interfaces defined like below:
(NOTE: My code has more than one derived level; example for simplicity)
public interface IHandler
{
void Handle(IServiceBase command);
}
public interface IHandler<out T> : IHandler where T : IServiceBase { }
public interface IServiceBase { }
public interface IServiceDerived : IServiceBase { }
public class ServiceBase : IServiceBase { }
public class ServiceDerived : IServiceDerived { }
public class ServiceBaseHandler : IHandler<IServiceBase>
{
public void Handle(IServiceBase command) { }
}
public class ServiceDerivedHandler : IHandler<IServiceDerived>
{
public void Handle(IServiceBase command) { }
}
My snippet of registrations for this example looks like:
builder.RegisterType<DerivedCommand>().AsImplementedInterfaces();
builder.RegisterType<BaseCommand>().AsImplementedInterfaces();
builder.RegisterType<DerivedCommandHandler>().AsImplementedInterfaces();
builder.RegisterType<BaseCommandHandler>().AsImplementedInterfaces();
This container.Resolve<IEnumerable<IHandler<IBaseCommand>>>(); only returns BaseCommandHandler.
I need to get BaseCommandHandler and all derived types, which in this instance would include DerivedCommandHandler too.
I realize this registration container.Resolve<IEnumerable<IHandler>>(); will resolve ALL handlers but I need to be able to resolve any where in the derived chain.
QUESTION: How do I resolve all handlers starting from a specific derived service?
asked 56 secs ago
AutoFac Resolve CommandHandlers from specific derived services
Aucun commentaire:
Enregistrer un commentaire