我有一些存储库。通过界面IRepository
实现与它们的合作。
在使用ISession实现的sample project HomeController
构造函数中。当我写这篇文章时:
public class TestingController : Controller
{
private ISession session;
public TestingController(ISession session)
{
this.session = session;
}
//Some code here with this.session
}
运作良好。当我决定使用IRepository
时:
public class TestingController : Controller
{
private IRepository repository;
public TestingController(IRepository repository)
{
this.repository = repository;
}
//Some code here with this.repository
}
它在其他类WindsorControllerFactory
的此方法中不起作用:
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path {0} culd not found!", requestContext.HttpContext.Request.Path));
}
return (IController)this.kernel.Resolve(controllerType);
}
我有例外
无法创建组件'MvcApplication1.Controllers.ResultsController',因为它具有要满足的依赖性。
'MvcApplication1.Controllers.ResultsController'正在等待 以下依赖项: - 没有注册的服务'dal.Repository.IRepository'。
如何解决?
P.S。大会dal.Repository
正在运作。如果我在任何地方写new dal.Repository.Repository()
而不是this.repository
- 它就可以了。
答案 0 :(得分:3)
看起来你错过了IRepository
的绑定。
您必须具有实现IRepository
接口的具体类,比如说MyRepository
。然后你应该配置Windsor,以了解IRepository
的内容。
类似的东西,
container.Register(Component.For<IRepository>().ImplementedBy<MyRepository>());
答案 1 :(得分:0)
我可以按照Documentation
解决同样的问题另一件事是,如果我们从github下载此项目的新版本,我们将看不到此expcetion Link