博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ninject在.NET WebForm和MVC中的使用
阅读量:4315 次
发布时间:2019-06-06

本文共 2737 字,大约阅读时间需要 9 分钟。

1.建立项目:Models/BLL/DAL/IBLL/IDAL/WebSite

2.WebSite要引用其余几个项目

3.NuGet中搜索Ninject,安装 Ninject、Ninject.Web.Common、Ninject.Web 这三个包到WebSite上面。

4.打开WebSite 的App_Start文件夹,会新出现一个 NinjectWebCommon 类,其中有一个函数:private static void RegisterServices(IKernel kernel){}

5.在这个 RegisterServices 函数中就可以注册类的映射了

代码:

     ///         /// Load your modules or register your services here!        ///         /// The kernel.        private static void RegisterServices(IKernel kernel)        {
kernel.Bind
().To
(); kernel.Bind
().To
(); }

6.在WebForm中使用的代码:using Ninject;

public partial class _Default : Page    {        [Inject]        public IBLL.IUserInfo UserBLL { get; set; }        protected void Page_Load(object sender, EventArgs e)        {            string name = UserBLL.GetEntity(10).NickName;            Response.Write(name);        }    }

7.在BLL和DAL中也要使用Ninject,需要引用相关DLL,这个DLL会自动在 解决方案的根目录下 的Ninject文件夹里。如果没有,就去WebSite的bin目录找。

添加引用后,使用代码:BLL和DAL的使用方法是一样的。

using System.Data;using IBLL;using Ninject;using System.Collections.Generic;using System;namespace BLL{    ///     /// 用户表    ///     public class UserInfo : IUserInfo    {        [Inject]        public IDAL.IUserInfo UserInfoDAL { get; set; }        ///         /// 得到一个实体        ///         ///         /// 
public Models.UserInfo GetEntity(int ID) { return UserInfoDAL.GetEntity(ID); } }}

MVC中使用Ninject

引用好相关的dll

新建一个类(我放到网站根目录了)代码:

public class NinjectDependencyResolver : System.Web.Mvc.IDependencyResolver    {        private readonly IKernel kernel;        public NinjectDependencyResolver()        {            kernel = new StandardKernel();            AddBindings();        }        private void AddBindings()        {            #region 自定义 编写映射            kernel.Bind
().To
(); kernel.Bind
().To
(); #endregion } public object GetService(Type serviceType) { return kernel.TryGet(serviceType); } public IEnumerable
GetServices(Type serviceType) { return kernel.GetAll(serviceType); } }

Global文件代码新增注册:

protected void Application_Start()        {            DependencyResolver.SetResolver(new NinjectDependencyResolver());//注册Ioc容器            AreaRegistration.RegisterAllAreas();            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);        }

使用方法跟之前一样。

 

转载于:https://www.cnblogs.com/xsj1989/p/6800862.html

你可能感兴趣的文章
centos 创建以日期为名的文件夹
查看>>
Java Timer触发定时器
查看>>
Page Object设计模式
查看>>
程序的基础知识
查看>>
在VIM中使用GDB调试 – 使用vimgdb
查看>>
python爬虫---从零开始(五)pyQuery库
查看>>
Centos MySQL数据库迁移详细步骤
查看>>
新建 WinCE7.0 下的 Silverlight 工程
查看>>
腾讯的张小龙是一个怎样的人?
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>
git
查看>>
btn按钮之间事件相互调用
查看>>
Entity Framework 4.3.1 级联删除
查看>>
codevs 1163:访问艺术馆
查看>>
冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱
查看>>
并查集
查看>>
sessionStorage
查看>>