Say I have an interface that inherits another interface:
public interface IInvoiceFactory : IConfigFactory<Invoice, InvoiceRequest>
This doesn't resolve:
container.RegisterType<IConfigFactory<Invoice, InvoiceRequest>, IInvoiceFactory>();
container.RegisterType<IInvoiceFactory, InvoiceFactory>();
Is it possible to have an interface inherit another interface in the DI world?
You could do this, which isn't quite what you wanted, but may resolve what you need:
container.RegisterType<IInvoiceFactory, InvoiceFactory>();
container.RegisterType<IConfigFactory<Invoice, InvoiceRequest>, InvoiceFactory>();
That will mean both of these will resolve an instance of InvoiceFactory
:
var factory = container.Resolve<IInvoiceFactory>();
var factory = container.Resolve<IConfigFactory<Invoice, InvoiceRequest>>();
Other containers give you ways of registering all interfaces implemented by a type, and I'm guessing Unity provides that mechanism, too, so there is likely a better way of doing this. As I said though, it depends if this solves your situation or not.