1

我有一些存储库。与它们的工作是通过一个接口来实现的IRepository
在使用 ISession 实现的示例项目构造函数中。 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'。

如何解决?

PS 大会dal.Repository正在工作。如果我到处写new dal.Repository.Repository()而不是this.repository- 它工作。

4

2 回答 2

3

看起来您缺少IRepository.

你必须有具体的类来实现IRepository接口,比如说MyRepository。然后你应该配置 Windsor,以了解它IRepository是关于什么的。

就像是,

container.Register(Component.For<IRepository>().ImplementedBy<MyRepository>());
于 2012-04-18T10:02:52.810 回答
0

我可以通过遵循本文档来解决相同的问题

另一件事是,如果我们从 github 下载这个项目的新版本,我们将看不到这个异常链接

于 2015-08-01T00:22:05.507 回答