【问题标题】:DI error when calling an assembly from an injected assembly从注入的程序集调用程序集时出现 DI 错误
【发布时间】:2012-01-06 11:19:08
【问题描述】:

所以我在依赖注入方面遇到了一些问题。我收到以下错误:

错误激活 IDocumentReadRepository 没有匹配的绑定 可用,且类型不可自绑定。激活路径:3) 将依赖项 IDocumentReadRepository 注入参数 ReadOrchestrator 类型的构造函数的 readRepository 2) 注入 依赖IReadOrchestrator成参数

所以我将我的 readOrchestrator 注入到我的 MVC3 应用程序中,这很好。但是当我在我的 readOrchestrator 中调用 IDocumentReadRepository 中的方法时,问题就出现了。

我的 ReadOrchestrator 看起来像:

public class ReadOrchestrator : IReadOrchestrator
{
    private readonly IDocumentReadRepository _readRepository;

    public ReadOrchestrator(IDocumentReadRepository readRepository)
    {
        _readRepository = readRepository;
    }

    public UserFeed GetUserFeed(string userName, int pageNumber, int pageSize)
    {
        var feed = _readRepository.Query<UserFeed>(x => x.UserName == (string)userName
            .Page(pageNumber, pageSize));
        return feed;
    }
}

    public class DocumentReadRepository : IDocumentReadRepository
    {
        readonly IDocumentStore _documentStore;

        public DocumentReadRepository(IDocumentStore documentStore)
        {
            _documentStore = documentStore;
        }
...
}

在这种情况下我应该使用 DI 吗?如果是这样,我应该如何/在哪里为 IDocumentReadRepository 进行绑定?还是应该在每次调用 ReadOrchestrator 时创建它的新实例?

谢谢

【问题讨论】:

  • 如何注入ReadOrchestrator?对DocumentReadRepository 执行相同操作。

标签: .net asp.net-mvc-3 c#-4.0 ninject


【解决方案1】:

是的,您需要将IDocumentReadRepository 注册或绑定到具体的实现,即DocumentReadRepository

您的代码库中某处有一个 BindModule。

DocumentReadRepository 进行绑定,当需要创建ReadOrchestrator 的实例时,ninject 将为您连接依赖项。

这样

this.Bind<IDocumentReadRepository>.To<DocumentReadRepository>();

【讨论】:

  • 我尝试在 MVC 级别将我的内核绑定到它.. 但不起作用
  • 从任何 Ninject 代码中清除项目,然后通过 NuGet 添加 NinjectNinject.Web.Mvc,它会为您配置。
  • 这是问题所在,我没有正确引用ninject!
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多