gpt4 book ai didi

c# - 如何在 C# 类库中使用 Ninject

转载 作者:太空狗 更新时间:2023-10-29 23:30:38 25 4
gpt4 key购买 nike

我在 MVC Web 应用程序中使用 Ninject 来注入(inject)业务逻辑类没有任何问题。但我想将数据访问类注入(inject)业务逻辑类的构造函数。逻辑层是一个类库,没有 Program.cs 类或入口点。

数据访问类

 public class DataAccessClass
{
public void Insert(Product product)
{
new SqlObj().Insert(Product);
}
}

数据访问类接口(interface)

 public Interface IDataAccessClass()
{
void Insert(Product product);
}

业务逻辑类

 public class ProductLogic()
{
IDataAccessClass _dataAccessClass;

//DataAccessClass should be injected here using Ninject
public ProductLogic(IDataAccessClass dataAccessClass)
{
_dataAccessClass=dataAccessClass;
}
public InsertProduct(Product product)
{
_dataAccessClass.Insert(product);
}
}

这是我需要的我有一个 3 层应用程序,各层是:

  • Web:表示层 (ASP.NET MVC) --> 只看到 BLL
  • BLL:业务逻辑层 --> 只看到 DAL
  • DAL:数据访问层

所以 Web 层对我的 DAL 层一无所知。我的 DAL 中有存储库接口(interface)和具体类,它们在业务逻辑类的 BLL 层中使用。问题是,为了分离 DALBLL,我该如何设置 Ninject 以将我的存储库实现注入(inject)到 BLL 层?

最佳答案

我刚刚看到这篇文章,并且有与原始发帖人相同的潜在误解,直到我明白:

类库就是库。他们不控制依赖项的注入(inject)。 DI 在使用这些库的任何应用程序中配置(无论是控制台、ASP.NET、WPF、WinForms 还是其他),即使这些注入(inject)仅在类库中也是如此。

我在将我的核心模型和 Entity Framework (使用工作单元)移动到一个单独的类库中以供重用时遇到了这个问题。我花了几个小时试图弄清楚该类库如何配置其 DI,但最终是 MVC 网络应用程序引用了需要处理它的类库。

换句话说,在我实际应用程序的 Bootstrap 中,我需要绑定(bind)在我引用的类库中使用的接口(interface)/具体类。

关于c# - 如何在 C# 类库中使用 Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com