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

时间:2014-07-30 20:19:16

标签: asp.net dependency-injection ninject repository-pattern

我对使用存储库模式有一个很好的想法,并且一直在尝试升级"我们目前创建ASP .Net网站的方式。所以我做以下

  1. 使用名为 DataAccessLayer 的类项目和另一个名为 BusinessLogicLayer 的类项目创建解决方案。最后是第三个项目,这是我的 ASP .Net网站(一个普通网站)。
  2. 我将一个dbml文件添加到DAL并拖动一个表,然后在我的BLL中添加一个接口和一个实现此接口的类:
  3. 我的界面

    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项目&gt;管理NuGet包&gt;搜索Ninject并找到了一些。经过进一步的研究后,我失去了如何将Ninject添加到普通的ASP .Net网站,我对这些条目的数量感到不知所措?具体哪个添加我需要?由于有很多MVC和进一步阅读,我觉得我有点困惑。

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

    为了使用Ninject条目但是我不使用MVC,有没有人可以指导我所需要的内容?

2 个答案:

答案 0 :(得分:7)

从&#34;软件包管理器控制台&#34;安装Ninject.Web或NuGet。

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

enter image description here

OR

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 :(得分:0)

另外 win 的回答中我建议人们不要在ASP.NET Webforms中使用基于构造函数的注入而感到困惑strong> Web表单不支持基于构造函数的注入。在默认配置中,它们仅支持 Win 所示的基于属性的注入