How To Use Ninject Named Bindings With DependencyResolver and PropertyInjection
Asked Answered
M

1

10

I realize constructor injection is preferred but I'm curious how to use Ninject's contextual 'Named Bindings' when using another form of injection.

Specifically how do I do the following when using DependencyResolver or property injection.

public MyService([Named("Alpha")] IRepository repository)
{
    this.repository = repository;
}
Minnow answered 26/5, 2011 at 3:42 Comment(0)
C
21

You can create a named binding to work on Alpha:

Bind<IRepository>().To<AlphaRepository>().Named("Alpha");

then you can specify others like:

Bind<IRepository>().To<AnotherRepository>().Named("Beta");

When your example constructor is used you will get the AlphaRepository.

In order to use the name with a property give the property a name attribute just like you you did for the param:

[Inject, Named("Alpha")]
public IRepository Foo {get; set;}
Carburetor answered 29/5, 2011 at 17:38 Comment(2)
I know how to create the named binding and I know how to use the binding with a constructor. My question is how do I use a named binding when doing injection via property injection.Minnow
Updated to answer your questionCarburetor

© 2022 - 2024 — McMap. All rights reserved.