如何在ASP.NET WebForm中使用Ninject进行依赖注入?

3

我对使用仓储模式有一定的了解,并一直试图“升级”我们当前创建ASP .Net网站的方式。因此,我做了以下几点:

  1. 创建一个名为DataAccessLayer的类项目,以及另一个名为BusinessLogicLayer的类项目。最后是我的ASP .Net网站(一个普通的网站)作为第三个项目。
  2. 在DAL中添加一个dbml文件并拖动一个表,在BLL中添加一个接口和一个实现此接口的类:

我的接口

namespace BLL.Interfaces
{
    interface IUser
    {
        List<User> GetAllUsers();
    }
}

在我的课堂里

namespace BLL.Services
{
   public class UserService : BLL.Interfaces.IUser
    {
        public List<User> GetUsers()
        {
            throw new NotImplementedException();
        }
    }
}

我知道这段代码并没有完全完成,只是为了举例说明。

所以我右键点击 BLL 项目 > 管理 NuGet 包 > 搜索 Ninject 并找到一些包。返回的结果让我感到不知所措,经过进一步研究,我不知道如何将 Ninject 添加到普通的 ASP .Net 网站中。特别是我需要哪个插件?因为有很多 MVC 的插件,我读得越多,就越感到困惑。

我试图将其添加到 BLL 项目中,因为我认为应该在那里注册我的服务

是否有人能够指导我到底应该怎么做才能使用 Ninject,但我不使用 MVC?

2个回答

8

请从“程序包管理器控制台”或NuGet安装Ninject.Web

截至本文撰写时,版本为3.2.1。

enter image description here

或者

enter image description here

它将安装以下4个软件包 -

enter image description here

示例服务类

public interface IUserService
{
    List<string> GetUsers();
}

public class UserService : IUserService
{
    public List<string> GetUsers()
    {
        return new List<string> {"john", "eric"};
    }
}

然后将绑定添加到~/App_Start/NinjectWebCommon.cs文件中。

enter image description here

在代码后台页面中,使用 [Inject] 属性进行属性注入。

enter image description here


1
图片并不真正可见 :) - Mahmoud Hboubati
1
@MahmoudHboubati 在图像上右键单击,然后选择在新标签页中打开图像(在Chrome中),查看图像(在Fire Fox中)或另存为(在IE中)。 - Win

1
win 的回答中,我建议人们不要在 ASP.NET Webforms 中使用 构造函数注入,因为 Web Forms 并不支持构造函数注入。在默认配置下,它们仅支持如 Win 所演示的属性注入

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接