ASP.NET MVC3 + Ninject.Mvc3 依赖注入原来可以这么简单
第一步、新创建一个 ASP.NET MVC3 工程。
第二步、通过 NuGet 控制台直接输入命令:install-package Ninject.Mvc3
安装完这个源码包之后,所有的依赖注入框架已设置完成,无须你改动任何代码,
你会发现项目中添加了一个“App_Start”文件夹,在这个文件夹中生成了一个名为“NinjectMVC3.cs”的代码文件。
第三步、打开 \App_Start\NinjectMVC3.cs,找到 RegisterServices 方法,将你的依赖注入映射代码直接写入即可。
代码清单如下:
自动生成的 \App_Start\NinjectMVC3.cs 代码:
[assembly: WebActivator.PreApplicationStartMethod(typeof(MvcApplication3.App_Start.NinjectMVC3), "Start")][assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(MvcApplication3.App_Start.NinjectMVC3), "Stop")] namespace MvcApplication3.App_Start{using System.Reflection;using Microsoft.Web.Infrastructure.DynamicModuleHelper;using Ninject;using Ninject.Web.Mvc;using MvcApplication3.Services; { public static class NinjectMVC3 private static readonly Bootstrapper bootstrapper = new Bootstrapper(); /// <summary>/// Starts the application/// </summary> public static void Start() { DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule)); DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule)); bootstrapper.Initialize(CreateKernel); } /// <summary>/// Stops the application./// </summary> public static void Stop() { bootstrapper.ShutDown(); } /// <summary>/// Creates the kernel that will manage your application./// </summary>/// <returns>The created kernel.</returns> private static IKernel CreateKernel() {var kernel = new StandardKernel(); RegisterServices(kernel);return kernel; } /// <summary>/// Load your modules or register your services here!/// </summary>/// <param name="kernel">The kernel.</param> private static void RegisterServices(IKernel kernel) {//写入你需要绑定的依赖注入关系,除了此方法之外的其它代码都是自动生成的,无须我们操心。//2011-10-26 新修复 bug,遗漏了后面的 InRequestScope(),这个很重要!//感谢 Scott Xu 南方小鬼 的指错:),差点误人子弟啊! kernel.Bind<ITestService>().To<TestService>().InRequestScope(); } }}
测试代码如下:
\Services\ITestService.cs
namespace MvcApplication3.Services{public interface ITestService {string GetMessage(string aString); }}
\Services\TestService.cs
using System; namespace MvcApplication3.Services{public class TestService : ITestService {string ITestService.GetMessage(string aString) {return "--------------" + (String.IsNullOrEmpty(aString) ? String.Empty : aString) + "--------------"; } }}
\Controllers\HomeController.cs
using System.Web.Mvc;using Ninject;using MvcApplication3.Services; namespace MvcApplication3.Controllers{public class HomeController : Controller { [Inject]public ITestService Service { get; set; } public ActionResult Index() { ViewBag.Message = Service.GetMessage("Welcome to ASP.NET MVC!");return View(); } public ActionResult About() {return View(); } }}
原文:http://www.cnblogs.com/cnmaxu/archive/2011/10/25/2224375.html
转载于:https://www.cnblogs.com/alphaqiu/archive/2012/03/01/2376309.html
ASP.NET MVC3 + Ninject.Mvc3 依赖注入原来可以这么简单相关推荐
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- ASP.NET Core 中的依赖注入
什么是依赖注入 软件设计原则中有一个依赖倒置原则(DIP),为了更好的解耦,讲究要依赖于抽象,不要依赖于具体.而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖 ...
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计 ...
- Asp.Net Mvc3.0(MEF依赖注入实例)
前言 在http://www.cnblogs.com/aehyok/p/3386650.html前面一节主要是对MEF进行简单的介绍.本节主要来介绍如何在Asp.Net Mvc3.0中使用MEF. 准 ...
- 在MVC3项目中结合NInject实现依赖注入
解释: 依赖注入:(Dependency Injection),也称之为控制反转. 大致意思就是,让我们的应用程序所依赖的一些外部服务,可以根据需要动态注入,而不是预先在应用程序中明确的约束.这种思想 ...
- Asp.Net Mvc3.0(MEF依赖注入理论)
前言 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等.MEF为开发人员提供了一个工具,让我们 ...
- ASP.NET Core 2.0 依赖注入
问题 如何使用 ASP.NET Core 服务容器进行依赖注入? 答案 创建一个服务 public interface IGreetingService { string Greet(string t ...
- ASP.NET Core MVC 之依赖注入 Controller
ASP.NET Core MVC 控制器应通过构造函数明确地请求它们地依赖关系,在某些情况下,单个控制器地操作可能需要一个服务,在控制器级别上的请求可能没有意义.在这种情况下,也可以将服务作为 Ac ...
- ASP.NET Core MVC 之依赖注入 View
ASP.NET Core 支持在试图中使用依赖注入.这将有助于提供视图专用的服务,比如本地化或者仅用于填充视图元素的数据.应尽量保持控制器和视图之间的关注点分离.视图所显示的大部分数据应该从控制器传入 ...
最新文章
- Maven 私服搭建
- 9个前端动画库让你的交互更加性感
- 编译原理题练习题测试题
- 在Angular单个的单元测试里,调用多次detectChange,会重复执行ngAfterViewInit hook吗
- 仿58网,赶集网,百姓网swfupload图片上传效果(asp.net 2.0)
- 阵列卡不能格式化磁盘问题所在
- ajax如何用编号查询姓名,Ajax js 使用Ajax检测用户名是否存在
- MyBatis mysql 字符串拼接
- js 动态生成表格案例
- 国家计算机网络设施英文简称,中国教育和科研计算机网的英文简称是
- docker daemon调试
- Android4.4 状态栏WiFi图标显示流程
- springboot影院售票小程序毕业设计-附源码201532
- css多行文本换行时出现右边参差不齐结局方案
- js调取百度地图,展示公司位置
- 奈学 AI架构师 p6,p7,p8
- Arduino跑通ssd1306_spi显示屏
- 新能源汽车高压配电管理(PDU/BDU)
- LaTeX使用入门_Win10_TeXstudio
- 美国和德国的原子弹研究之旅----不带来受益的项目一定不可取吗?