Alex Alex - 1 year ago 92
C# Question

sample example about Dependency injection needs explanation

I was going through this article about dependency injection

It shows Unity Container from Microsoft.

There are a few things that are not making sense to me

for example, following line

public ProductsController(IProductRepository repository)

The above is the constructor of Controller. I need to know who passes the
to the constructor? ANd is that made possible by registering IProductRepository interface with Unity?

public static void Register(HttpConfiguration config)
var container = new UnityContainer();
container.RegisterType<IProductRepository, ProductRepository>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);

// Other Web API configuration not shown.

Is the above code is all needed to make MVC pass the object to the constructor of a controller?

Answer Source

You answered your own question:

is that made possible by registering IProductRepository interface with Unity?


When you request to resolve a type using Unity, the container searches for public constructors. If the constructor needs some implementation (IProductRepository in your case), the container searches within its registrations for an implementation for all the needed parameters. If found, it resolves that. This is a recursive process.

So yes. You need to register an implementation of IProductRepository using the container in order to resolve an instance of the Controller using that container.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download