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);
    }
  • 相关阅读:
    Mac下搭建SVN服务器
    iOS的扩展类,扩展属性
    关于TableViewCell高度自适应问题的整理
    关于适配的一点考虑
    Visual format language
    css命名定义
    定位之初解
    定位以及relative和absolute的结合
    float的一点想法
    javascript的学习路子
  • 原文地址:https://www.cnblogs.com/pengzhen/p/3788226.html
Copyright © 2011-2022 走看看