zoukankan      html  css  js  c++  java
  • ASP.NET MVC3使用Unity2.0实现依赖注入

    创建空的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依赖注入容器。

    代码如下:
     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"

    代码下载 

  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/kinglau/p/2116656.html
Copyright © 2011-2022 走看看