第6章 MVC基本工具

DI容器、单元测试框架、模仿工具

笔记:

  1.Ninject条件绑定常用方法:

    When(predicate)      //当predicate结果为true时,实施绑定。(predicate一个lambda表达式)

    WhenclassHas<T>()    //当被注入的类以注解属性进行注释,且其类型为T时,实施绑定([T])

    WhenInjectedInfo<T>()  //当要被注入的类是类型T时,实施绑定

  2.使用Ninject:

    1.创建依赖解析器(Infrastructure)

    

using System;
using System.Collections.Generic;
using System.Web.Mvc;
using Essentialtools.Models;
using Ninject;

namespace Essentialtools.Infrastructure
{
    public class NinjdectDependencyResolver:IDependencyResolver
    {
        private IKernel kernel;

        public NinjdectDependencyResolver()
        {
            //创建Ninject内核的实例
            kernel = new StandardKernel();
            AddBindings();
        }

        public object GetService(Type serviceType)
        {
            return kernel.TryGet(serviceType);
        }

        public IEnumerable<object> GetServices(Type serviceType)
        {
            return kernel.GetAll(serviceType);
        }

        //建立接口与实现类之间的关系
        private void AddBindings()
        {
            //构造器
            kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
            //属性
           // kernel.Bind<IDiscoutnHelper>().To<DefaultDiscoutnHelper>().WithPropertyValue("DiscountSize",20M);
            //构造器参数
            kernel.Bind<IDiscoutnHelper>().To<DefaultDiscoutnHelper>().WithConstructorArgument("discountParam", 30M);
            //条件绑定
            kernel.Bind<IDiscoutnHelper>().To<FlexibleDiscountHelper>().WhenInjectedInto<LinqValueCalculator>();

        }
    }
}

    2.注册依赖解析器(Global.asax)

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
using Essentialtools.Infrastructure;

namespace Essentialtools
{
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
    // 请访问 http://go.microsoft.com/?LinkId=9394801
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            //注册依赖解析器
            DependencyResolver.SetResolver(new NinjdectDependencyResolver());

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}

    3.重构控制器

.................  //构造器
 private IValueCalculator calc;

        public HomeController(IValueCalculator calcParam)
        {
            calc = calcParam;
        }
.................

  单元测试 这个是思维方法和开发风格决定的。  

源码:http://yunpan.cn/cQ9QEgtrWXaS9 访问密码 bbd2

时间: 2024-12-28 17:07:36

第6章 MVC基本工具的相关文章

联想教育应用使用说明(7.6版本号)——第4章 网络控制工具的使用

第4章网络控制工具的使用 第1章联想教育应用方案功能简单介绍http://blog.csdn.net/u013634961/article/details/39615525 第2章联想教育应用的首次部署http://blog.csdn.net/u013634961/article/details/39616325 第3章联想教育应用的日常维护与使用 http://blog.csdn.net/u013634961/article/details/39804509 第4章网络控制工具的使用 http

联想教育应用使用说明(7.6版本)——第4章 网络控制工具的使用

第4章网络控制工具的使用 第1章联想教育应用方案功能简介http://blog.csdn.net/u013634961/article/details/39615525 第2章联想教育应用的首次部署http://blog.csdn.net/u013634961/article/details/39616325 第3章联想教育应用的日常维护与使用 http://blog.csdn.net/u013634961/article/details/39804509 第4章网络控制工具的使用 http:/

自制MVC之工具类插件一

1).BreakRomoteURLAttribute 提交或交互的URL数据是否来源于其它地方,站内提交,防止跨站 2). DataAttribute 取得post或get提交的数据.如果没有特殊设置,取得的数据是sql注入.xss注入过滤的. 属性名 作用 默认值 选项说明 其它说明 IsEmpty 是否可以提交空数据,就是表单数值一个都没有的情况. true 必填 AspectPriority 插件执行优先级 空 可选 MD5Key 需md5加密的key,多个用逗号分隔. 10000 可选

【MVC 4】4.MVC 基本工具(Visual Studio 的单元测试、使用Moq)

 作者:[美]Adam Freeman      来源:<精通ASP.NET MVC 4> 3.Visual Studio 的单元测试 有很多.NET单元测试包,其中很多是开源和免费的.本文打算使用 Visual Studio 附带的内建单元测试支持,但其他一些.NET单元测试包也是可用的. 为了演示Visual Studio的单元测试支持,本例打算对示例项目添加一个 IDiscountHelper 接口的新实现. 在 Models 文件夹下新建类文件 MinimumDiscountHelpe

第十九章 面向对象的工具

学习要点:1.OOP 的魔术方法2.类函数和对象函数3.OOP 的反射API PHP通过类和方法等语言结构支持面向对象编程.同时也通过对象相关的函数和内置类为面向对象提供广泛支持. 一.OOP的魔术方法 PHP引入了__autoload()内置方法来自动包含类文件.__autoload()应该被写成单个参数的方法.当PHP引擎遇到试图实例化未知类的操作时,会调用__autoload()方法,并将类名当作字符串参数传递给它. function __autoload($_className) { r

MVC 基本工具(Visual Studio 的单元测试、使用Moq)

3.Visual Studio 的单元测试 有很多.NET单元测试包,其中很多是开源和免费的.本文打算使用 Visual Studio 附带的内建单元测试支持,但其他一些.NET单元测试包也是可用的. 为了演示Visual Studio的单元测试支持,本例打算对示例项目添加一个 IDiscountHelper 接口的新实现. 在 Models 文件夹下新建类文件 MinimumDiscountHelper.cs : namespace EssentiaTools.Models { public

第01章 VS2015前端工具:NPM和Web Essentials

1.写作背景 想在5月份前换个工作环境了,“检讨”一下自己混饭的技术水平和处世的人脉关系,觉得很不给力!为人方面,人各有志也就不纠结了,但本领得尽量提高一下. 我也不擅长写博客,也发觉以前写过的,要不半途而废,要不质量惨不忍睹,所以以前博文干脆全部删除,试着再回顾一遍也罢! 2.本章概述 VS2015 CTP6下的NPM(bower及grunt)和Web Essentials基本安装和使用.如果你是web前端开发人员,建议熟练掌握. 3.NPM a package manager for Jav

第3章 MVC模式

3.2 理解MVC模式 模型(Model):表示用户使用的数据. 1.视图模型(View Model),只表示视图和控制器之间传递的数据,比较简单: 2.领域模型(Domain Model),表示业务领域的数据,以及处理这些数据的操作.转换.规则. 视图(View):用于把模型的某些部分渲染成用户界面(UI). 控制器(Controller): 1.处理传入的请求: 2.执行模型上的操作: 3.选择渲染给用户视图. 重点: 在域模型设计阶段,一定要进行仔细的规划和设计:域中的每一个类.属性.操作

第9章 文本处理工具sed

笔记整理开始时间:2018年4月17日08:45:48 更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 本章内容 sed介绍 sed用法 sed高级用法 文本处理工具sed Stream EDitor,行编辑器 又称流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 缓冲区,称为"模式空间"(pattern space),接着用sed命令处理