【发布时间】:2024-12-14 07:30:02
【问题描述】:
我有一个界面:
public interface IProductRepository {
IEnumerable<Product> Products { get; }
}
一种方法:
public IEnumerable<Product> getProducts() { }
我的控制器:
public class ProductController : Controller
{
private IProductRepository repository;
public ProductController(IProductRepository productRepository) {
this.repository = productRepository;
}
public ViewResult List() {
return View(repository.Products);
}
}
我正在尝试在 AddBindings() 中将它们绑定在一起 {
productDAL db = new productDAL();
IEnumerable<Product> help = db.getProducts();
kernel.Bind<IProductRepository>().To< >;
我试图使用该方法而不是这样的方法:
Mock<IProductRepostiory> mock = new Mock<IProductRespository>();
mock.Setup(m => m.Products).Returns(new List<Product> {
new Product { Name= ... }
kernel.Bind<IProductRepository>().ToConstant(mock.Object);
但是使用 ToMethod 之类的东西。 getProducts() 从数据库返回一个 IEnumerable,然后我希望 ninject 将其注入到 ProductsController,这样我就可以将列表添加到视图中。我知道 Product 类不继承 IProductDepository 也不继承 productDAL,这是故意的。
这是在我的 DependencyResolver 类中。
有人可以帮忙绑定这里吗,我缺少演员表,谢谢。
我想通了,这就是我修复它的方法:
我有一个界面:
public interface IProductRepository {
IEnumerable<CountyDataset> Products { get; }
}
我有一个 MVC 控制器:
public class ProductController : Controller
{
private IProductRepository repository;
public ProductController(IProductRepository productRepository) {
this.repository = productRepository;
}
public ViewResult List() {
return View(repository.Products);
}
}
我有一个 DAL:
public class productDAL: databaseDAL {
public productDAL() {
}
public IEnumerable<CountyDataset> Products {
get { ... }
}
}
这就是我所缺少的......
现在我有一个产品存储库(和朋友哈哈):
public class lcProducts : IProductRepository {
private productDAL context = new productDAL();
public IEnumerable<CountyDataset> Products {
get { return context.Products; }
}
}
这是我更正后的 DI 容器:
private void AddBindings() {
...
kernel.Bind<IProductRepository>().To<lcProducts>();
}
【问题讨论】: