Ошибка DI при вызове сборки из вставленной сборки - PullRequest
0 голосов
/ 06 января 2012

, поэтому у меня возникло несколько проблем с внедрением зависимостей .. я получаю следующую ошибку:

Ошибка активации IDocumentReadRepository Нет соответствующих привязок, и тип не является самосвязываемым.Путь активации: 3) Инъекция зависимости IDocumentReadRepository в параметр readRepository конструктора типа ReadOrchestrator 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?

спасибо

1 Ответ

1 голос
/ 06 января 2012

Да, конечно, вам нужно зарегистрироваться или привязать IDocumentReadRepository к конкретной реализации, а именно: DocumentReadRepository.

У вас есть BindModule где-то в вашей кодовой базе.

Выполните привязку для DocumentReadRepository и ninject свяжут для вас зависимости, когда будет создан экземпляр ReadOrchestrator.

Как это

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