While reading a book, I came across DI(dependency Injector) and the subsequent DI Container tool. Previously, I developed an application following a tutorial on asp.net website which never used such tool. So, my question can be summed-up in following two concerns :- How often do you use DI Container ?What requirements make you do so ? EDIT : Examples with and without DI Container. I have written the codes to understand which is better approach.Without DI Container --LinqValueCalculator lc = new LinqValueCalculator();ShoppingCart sc = new ShoppingCart(lc);decimal total = sc.CalculateStockValue();Console.WriteLine(Total: {0:c}, total);With DI Container -- (Ninject is used in this example)IKernel ninjectKernel = new StandardKernel();ninjectKernel.Bind<IValueCalculator>().To<LinqValueCalculator>();IValueCalculator calcImpl = ninjectKernel.Get<IValueCalculator>();ShoppingCart cart = new ShoppingCart(calcImpl);Console.WriteLine(Total: {0:c}, cart.CalculateStockValue());I will be honest, I feel that writing first code was easier and seemed natural. But, your views are what counts as i am just learning the MVC.
How often do you use DI container in your ASP.NET MVC application
dependency injection
How often do I use a DI Container?Very often. Close to always.What requirements make me do so?In ASP.NET MVC I always use a container, because when one uses Constructor Injection in Controllers one breaks the default convention of having default constructors. This means that a custom IControllerFactory is required, and while it's possible to write and maintain one by hand, it's more work. Using a DI Container that supports convention-based configuration, one can use Constructor Injection in a convention-based manner and less maintenance is required.Can we do without them?Yes, but at the cost of more maintenance of infrastructure code: https://stackoverflow.com/questions/5667801/arguments-against-inversion-of-control-containers/5668093#5668093