这是pro asp .net一书中的一个例子,但我无法弄清楚出了什么问题。我已经阅读了许多相同问题的帖子,但它并没有解决我的问题。
该错误表明IProductRepository由于其保护而无法访问,但我没有将任何内容设置为私有。我不明白
这是我的产品类
namespace SportStore.Domain.Entities
{
class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
ninject的addbiding方法
namespace SportsStore.WebUI.Infrastructure
{
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext
requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
Mock<IProductRepository> mock = new Mock<IProductRepository>();
mock.Setup(m => m.Products).Returns(new List<Product> {
new Product { Name = "Football", Price = 25 },
new Product { Name = "Surf board", Price = 179 },
new Product { Name = "Running shoes", Price = 95 }
}.AsQueryable());
ninjectKernel.Bind<IProductRepository>().ToConstant(mock.Object);
}
}
}
接口
namespace SportStore.Domain.Abstract
{
interface IProductRepository
{
IQueryable<Product> Products { get; }
}
}
答案 0 :(得分:2)
默认情况下,类和接口是程序集的内部。由于您可能正在使用多个程序集,因此将接口设置为public,您应该很高兴。