SIGN UP MEMBER LOGIN:    
ARTICLE

Unity framework with ASP.Net MVC Framework

Posted by Dhananjay Kumar Articles | ASP.NET MVC with C# July 12, 2009
This article will explain step by step that how to inject dependency using UNITY framework in ASP.Net MVC Application
Reader Level:
Download Files:
 

Objective:

This article will explain step by step that how to inject dependency using UNITY framework in ASP.Net MVC Application

Step 1:

Create a MVC application

image1.gif

Step 2:

Add Unity references to the MVC application.

Step 3:

Idea here is to create a custom controller factory. This custom controller factory will create the controller and inject the dependencies in that. Add a class to the project. Feel free to give any name; here name of the class is CustomUnityControllerFactory.

image2.gif

Extend this CustomUnityControllerFactory class from DefaultControllerFactory class.

image3.gif

Create reference of IUnityContainer. Don't forget to add include namespace Unity.

image4.gif

Create the constructor for CustomUnityControllerFactory and pass reference of Unity Container in that.

image5.gif

Override GetControllerInstance of DefaultControllerFactory. Here we will pass type of the controller , which we are going to create. In parameter of overrideen function we are passing type of the controller to be instanciated.

image6.gif

So the complete CustomUnityControllerFactory class will look like below.

CustomUnityControllerFactory.cs

image7.gif

Step 4
:

Now we need to do something at start up of the application. For that open Global. asax file. We need to modify Application.Start() method.

  • Create instance of IUnityContainer.
  • Create instance of CustomUnityControllerFactory and pass instance of unity container in that.
  • Set the CustomUnityControllerFactory as the default controller factory to be used. For this call Current method on ControllerBuilder and pass instance of CustomUnityControllerFactory in that. (see below code in blue)
  • Compile the application.

    image8.gif

Step 5:

Now it is time to check that, how Custom Unity Container Factory is working. To test that, we will create a service interface and concrete service class in Model.

  • Right click on Model and add an interface

  • image9.gif

    Interface contains the below code.

    image10.gif
     

  • Right click on Model and add a class and implement the Message() method.

    image11.gif

    Class contains the below code

    image12.gif

Step 6:

Go to Application_Start() and register the type.

image13.gif

So, now the complete code at Application Start () will look like

image14.gif

Step 7:

Now put a breakpoint at constructor of HomeController and run the application. We could see while debugging that dependency has been injected.

image15.gif

Now, you can see that dependency has been injected. Now normal routing will process. For Routing and other details of MVP read my articles here.

Conclusion:

I showed how to inject dependency using Unity in MVC application. 

Login to add your contents and source code to this article
share this article :
post comment
 
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Team Foundation Server Hosting
Become a Sponsor