zoukankan      html  css  js  c++  java
  • MVC 依赖注入扩展

         需求: 小明想要完成一个功能F,需要一把锤子T。

         有两种办法可以实现:

        1)小明很爱动手,精力很旺盛,于是,自己创建一个具有功能F的锤子T,并使用T来完成F;

        2)小明很懒,天天睡大觉,于是,他叫小健买了一把具有功能F的锤子T,并且还交代小健必须亲自送到他的手上(够懒吧?),他才使用T来完成F。

     

        是的,第一种方式就是动不动就new的;而第二种方式就是DI的一个解释。

       

        而MVC中的DI,没有多大的复杂,仍然也是OCP原则的体现。

        MVC框架设计的万能步骤:1)实现;2)注册。

    1. 实现IDependencyResolver接口

    public class MvcDependencyResolver : IDependencyResolver
    {
        public object GetService(Type serviceType)
        {
            return SomeContainer.Resolve(serviceType);
        }
    
        public IEnumerable<object> GetServices(Type serviceType)
        {
            var type = typeof(IEnumerable<>).MakeGenericType(serviceType);
            return (IEnumerable<object>)SomeContainer.Resolve(type);
        }
    }

    2.Gloabal中注册Resolver

    protected void Application_Start()
    {
    
        var dependencyResolver = new MvcDependencyResolver();
        DependencyResolver.SetResolver(dependencyResolver);
    
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
  • 相关阅读:
    准备开始学习XNA
    徐家骏:华为十年感悟
    memcached详解
    sql时间
    Sql server log file 缩小和删除
    看高手都是运用的灵活自如,打算从今天开始学习他!
    什么是内存对齐
    VS 2008 远程调试 与asp.net
    XNA入门的代码注释
    HTML的段落与文字
  • 原文地址:https://www.cnblogs.com/pengzhen/p/3788226.html
Copyright © 2011-2022 走看看