【ASP.NET MVC 学习笔记】- 05 依赖注入工具Ninject
2017-02-10 11:24
866 查看
本文参考:https://www.geek-share.com/detail/2586882620.html
1、Ninject是一款轻量级的DI工具,可通过VS的插件NuGet将其引用到项目中。
2、使用Ninject的步骤:
- 创建一个Ninject的内核对象
//创建Ninject内核实例 IKernel ninjectKernel = new StandardKernel();
- 把公开接口绑定到一个实现了该接口的类上
//绑定接口到实现了该接口的类。这种绑定告诉Ninject,当接收到一个请求IValueCalculator的实现时,返回一个LinqValueCalcutor的实例 ninjectKernel.Bind<IValueCalculator>().To<LinqValueCalculator<();
- 使用Ninject的Get方法获取公开接口的实现
// 获得实现接口的对象实例。Ninject将自动为我们创建LinqValueCalculator类的实例,并返回该实例的引用 IValueCalculator calcImpl = ninjectKernel.Get<IValueCalculator>();
- 调用接口实现类的方法
// 创建ShoppingCart实例并注入依赖 ShoppingCart cart = new ShoppingCart(calcImpl);
// 计算商品总价钱并输出结果 Console.WriteLine("Total: {0:c}", cart.CalculateStockValue());
3、当请求Ninject创建某个类型的实例时,它会检查这个类型和其它类型之间的耦合关系。如果存在依赖关系,那么Ninject会根据依赖处理理它们,并创建所有所需类的实例。
4、Ninject绑定时为属性赋值(支持链式语法):
ninjectKernel.Bind<IDiscountHelper>().To<DefaultDiscountHelper>().WithPropertyValue("DiscountSize", 5M).WithPropertyValue("DiscountSize2", 5M);
5、Ninject绑定时为构造函数传参(支持链式语法):
ninjectKernel.Bind<IDiscountHelper>().To< DefaultDiscountHelper>().WithConstructorArgument("discountParam", 5M).WithConstructorArgument("discountParam2", 5M);
6、Ninject的自绑定:
//没有构造函数参数、属性需要赋值时刺句可省略 ninjectKernel.Bind<ShoppingCart>().ToSelf(); //这种写法不需要关心ShoppingCart类依赖哪个接口,也不需要手动去获取该接口的实现(calcImpl)。 //当通过这句代码请求一个ShoppingCart类的实例的时候,Ninject会自动判断依赖关系,并为我们创建所需接口对应的实现。 ShoppingCart cart = ninjectKernel.Get<ShoppingCart>();
7、Ninject的派生类绑定:
//派生类绑定,其中LimitShoppingCart是ShoppingCart的子类 ninjectKernel.Bind<ShoppingCart>().To<LimitShoppingCart>().WithPropertyValue("ItemLimit", 3M);
8、Ninject的条件绑定:
//条件绑定,IValueCalculator接口现在有两个实现:IterativeValueCalculator和LinqValueCalculator。
//下列语句意思是:如果是把该接口的实现注入到LimitShoppingCart类,那么就用IterativeValueCalculator,其他情况都用LinqValueCalculator。 ninjectKernel.Bind<IValueCalculator>().To<LinqValueCalculator>(); ninjectKernel.Bind<IValueCalculator>().To<IterativeValueCalculator>().WhenInjectedInto<LimitShoppingCart>();
相关文章推荐
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.2.MVC的主要工具-Ninject
- ASP.NET_MVC使用Spring.Net.MVC依赖注入学习笔记
- 《Pro ASP.NET MVC 3 Framework》学习笔记之五【依赖注入及ninject工具使用】
- [ASP.NET MVC 小牛之路]05 - 使用 Ninject实现依赖注入
- Ninject--ASP.NET MVC 3中的依赖注入容器
- ASP.NET Core 2 学习笔记(四)依赖注入
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- Asp.net MVC 中使用 Ninject 实现依赖注入
- Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- ASP.NET MVC Ninject 实现依赖注入
- Pro ASP.NET MVC 5 Framework.学习笔记.6.4.MVC的必备工具
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- Asp.net core 学习笔记 ( DI 依赖注入 )
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.4.MVC的主要工具-使用Moq
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
- (7)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 利用Polly+AOP+依赖注入封装的降级框架