Ninject使用demo
public class HomeController : Controller
{
public ActionResult Index()
{
//核心对象
IKernel ninjectKernel = new StandardKernel(); ninjectKernel.Bind<IValueCaculator>().To<LinqValueCalcalator>(); //方案1:获取接口实例
IValueCaculator calImpl = ninjectKernel.Get<IValueCaculator>(); //方案2:自身绑定
//ShoppingCart cart = ninjectKernel.Get<ShoppingCart>(); //cart1.Products = new List<Product>() { new Product() { Category = "food", Price = }, new Product() { Category = "books", Price = }, new Product() { Category = "wine", Price = } }; ShoppingCart cart = new ShoppingCart(calImpl) { Products = new List<Product> { new Product() { Category = "food", Price = }, new Product() { Category = "books", Price = }, new Product() { Category = "wine", Price = } } }; var sum=cart.Cal();
return View();
} public ActionResult About()
{ return View();
}
}
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; } }
public interface IValueCaculator
{
decimal ValueProduct(IEnumerable<Product> products);
}
public class LinqValueCalcalator : IValueCaculator
{
public decimal ValueProduct(IEnumerable<Product> products)
{
return products.Sum(a => a.Price);
}
}
public class ShoppingCart
{
protected IValueCaculator valueCaculator; public ShoppingCart(IValueCaculator caculator)
{
valueCaculator = caculator;
} public IEnumerable<Product> Products { get; set; } public decimal Cal()
{
return valueCaculator.ValueProduct(Products);
} }
Ninject使用demo的更多相关文章
- Ninject之旅之五:Ninject XML配置
摘要 使用XML配置,需要添加Ninject XML扩展的引用.下一步是添加一个或多个包含类型注册的XML文件.记得这些文件应该跟应用程序一起发布.因此不要忘记将XML文件的属性设置成“Copy if ...
- Ninject简单的Demo
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 分享Mvc3+NInject+EF+LigerUI权限系统Demo
前段时间时不时看到有园友的分享权限系统,于是本人突发奇想,也想写一个玩玩,就利用晚上时间,陆陆续续花了一周多样子,写了如今这个权限系统,这个权限系统具有 组织结构.用户.角色.菜单,组织结构下挂用户, ...
- Nancy之基于Nancy.Hosting.Aspnet的小Demo
近来学习了一下Nancy这个框架,感觉挺好用的,就写篇简单的文章记录一下大致用法,由于是刚接触,写的代码 可能不规范,也没有具体的分层..莫吐槽... Nancy的官网:http://nancyfx. ...
- Ninject之旅之三:Ninject对象生命周期
摘要 DI容器的一个责任是管理他创建的对象的生命周期.他应该决定什么时候创建一个给定类型的对象,什么时候使用已经存在的对象.他还需要在对象不需要的时候处理对象.Ninject在不同的情况下管理对象的生 ...
- Ninject之旅之二:开始使用Ninject(附程序下载)
摘要 这篇文章介绍怎样将Ninject添加到实际的项目中,使用Ninject框架最基本的功能.首先用一个Hello World例子介绍怎么添加和使用Ninject.然后用一个更复杂的例子,介绍Ninj ...
- Ninject之旅之一:理解DI
摘要: DI(IoC)是当前软件架构设计中比较时髦的技术.DI(IoC)可以使代码耦合性更低,更容易维护,更容易测试.现在有很多开源的依赖反转的框架,Ninject是其中一个轻量级开源的.net DI ...
- Ninject的使用
摘要 DI容器的一个责任是管理他创建的对象的生命周期.他应该决定什么时候创建一个给定类型的对象,什么时候使用已经存在的对象.他还需要在对象不需要的时候处理对象.Ninject在不同的情况下管理对象的生 ...
- Ninject学习笔记<二>
本文转载自kuangkro 如果给您带来不便请联系博主 一.控制反转和依赖注入 Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架.所谓的IOC,即控制反转(Inversion of ...
随机推荐
- 【JAVA集合框架之List】
一.List接口概述. List有个很大的特点就是可以操作角标. 下面开始介绍List接口中相对于Collection接口比较特别的方法.在Collection接口中已经介绍的方法此处就不再赘述. 1 ...
- Linux中带颜色输出的printf使用简介(\033)
昨晚懒得FQ, 百度了一下linux中printf输出颜色的方法, 结果搜索结果质量让人倍感伤心. 越来越不想用bd了.还是Google一下吧, 手气真好, 第一个内容就很清楚明了! 我还是直接简单翻 ...
- php mysql PDO基本操作
<?php $dbh = new PDO('mysql:host=localhost;dbname=localhost', 'root', ''); $dbh->setAttribute( ...
- [Monitor] 监控规则定义
系统监控规则:
- PMP 第七章 项目成本管理
估算成本 制定预算 控制成本 1.成本管理计划的内容和目的是什么? 包括对成本进行估算 预算和控制的各过程,从而确保项目在批准的预算内完工. 2.直接成本.间接成本.可变成本.固定成本.质量成 ...
- Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 5 ...
- 如何修改 SQL Server 代理主作业 (Transact-SQL)
本主题介绍了如何使用存储过程修改 Microsoft SQL Server 代理主作业. 更改作业定义计划的详细信息 1. 执行 sp_update_schedule. 在作业中添加.更改 ...
- C语言连接SQLSERVER数据库
第一步:配置ODBC.在配置ODBC时有用户DSN.系统DSN.和文件DSN三种方法,为了稳妥起见,采用系统DSN. DSN的名字叫LocalServer,帐号:sa,密码123456 第二步:打开V ...
- 运用Python成为黑客
1.Fuzz测试: 漏洞挖掘有三种方法:白盒代码审计.灰盒逆向工程.黑盒测试.其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁. Fuzz测试,也叫做"模糊测试&quo ...
- CSS3-animation,表格表单的格式化
animation 1.与transition一样,animation在IE9之前都不支持,不仅如此,还需要大量的供应商前缀 2.定义关键帧:@内容中需要大量的前缀 @keyframes fadeI ...