Unity使用

创建空的ASP.NET MVC3项目,添加对Unity2.0动态库的引用。 

方法1:在MSDN上下载Untity2.0,安装后,默认安装在C:\Program Files\Microsoft Unity Application Block 2.0下。

   Microsoft.Practices.ServiceLocation.dll         

 Microsoft.Practices.Unity.Configuration.dll 

 Microsoft.Practices.Unity.dll  

 Microsoft.Practices.Unity.Interception.Configuration.dll

  Microsoft.Practices.Unity.Interception.dll

方法2:使用Package Manager Console

工具—Library Package ManagePackage Manager Console,执行下面的命令:

 

 

 

 

要在上面新创建的ASP.NET MVC3项目中使用Unity依赖注入容器,需要在项目中添加一个类,它实现IDependencyResolver的接口,调用具体的Unity依赖注入容器。

 

代码如下:

 using System.Web.Mvc;

using Microsoft.Practices.Unity;

复制代码
  public   class  UnityDependencyResolver : IDependencyResolver
    {
        
readonly  IUnityContainer _container;
        
public  UnityDependencyResolver(IUnityContainer container)
        {
            
this ._container  =  container;
        }
        
public   object  GetService(Type serviceType)
        {
            
try
            {
                
return  _container.Resolve(serviceType);
            }
            
catch
            {
                
return   null ;
            }
        }
        
public  IEnumerable < object >  GetServices(Type serviceType)
        {
            
try
            {
                
return  _container.ResolveAll(serviceType);
            }
            
catch
            {
                
return   new  List < object > ();
            }
        }
    }
复制代码

 

在Global.asax.cs中,创建Unity依赖注入容器,在Application_Start 方法中,使用前面创建的UnityDependencyResolver 类注册Unity容器作为ASP.NET MVCService Locator 
复制代码
代码如下:
protected   void  Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            
var container  =   new  UnityContainer();
            container.RegisterType < IMessages, Messages > ();
            DependencyResolver.SetResolver( new  UnityDependencyResolver(container));
        }
复制代码
同时容器使用RegisterType 注册了类型,在本例中注册了类型IMessage以及具体实现Messages 
 
增加HomeController.cs,代码如下:
 代码如下:
复制代码

public   class  HomeController : Controller
    {
                
        
private   readonly  IMessages messages;
        
public  HomeController(IMessages messages)
        {
            
this .messages  =  messages;
        }
        
public  ActionResult Index()
        {
            ViewBag.Message 
=  messages.Welcome();
            
return  View();
        }

    }
复制代码
 
增加接口IMessges和具体实现类Messages,代码如下:
 代码如下:
复制代码

public   interface  IMessages
{
    
string  Welcome();
}

public   class  Messages:IMessages
{
    
public   string  Welcome()
    {
         
return   " 欢迎在ASP.NET MVC3中使用Unity2.0 "
    }
}
复制代码
 
运行应用程序, Unity 依赖注入容器会解析在 HomeControler 定义的依赖, Index 页面显示 " 欢迎在 ASP.NET MVC3 中使用 Unity2.0"
 

代码下载 

 

 


扩展(练习)
 
 
Unity使用 _第1张图片
 
1 、-----------------------------------------------------------------------------------
 
 
Unity使用 _第2张图片
 
2、-----------------------------------------------------------------------------------
 
 
 
Unity使用 _第3张图片
 
Unity使用 _第4张图片
3、-----------------------------------------------------------------------------------
 
 
 
 
Unity使用 _第5张图片
Unity使用 _第6张图片
 
 
Unity使用 _第7张图片
 
 
 
Unity使用 _第8张图片
 
 

源代码
 

 
改成使用配置文件的方式
 
1、-----------------------------------------------------------------------------------
 
Unity使用 _第9张图片
 
2、-----------------------------------------------------------------------------------
 

你可能感兴趣的:(unity)