Не удается заставить работать NInject Conventions - PullRequest
0 голосов
/ 13 апреля 2011

Я изо всех сил пытаюсь заставить NInject Conventions работать.У меня есть следующий код:

public class DataAccessInjectionModule : NInjectModule
{
    var scanner = new AssemblyScanner();
    scanner.From(new[] {
            "Domain.dll",
            "DataAccess.dll"
        });
    scanner.WhereTypeInheritsFrom(typeof(IRepository<>));
    scanner.BindWith<DefaultBindingGenerator>(); // I have also tried new GenericBindingGenerator(typeof(IRepository<>))
    scanner.InRequestScope();

    Kernel.Scan(scanner);
}

Таким образом, в основном я пытаюсь привязать интерфейсы (такие как IFooRepository ), которые находятся в Domain.dll, к конкретному классу (например, FooRepository ), которые находятся в DataAccess.dll.

Однако, когда я позже пытаюсь извлечь класс из Ядра, я получаю ошибку: Нет доступных привязок, и типне привязывается к себе.

Есть ли что-то, чего мне не хватает?

1 Ответ

1 голос
/ 14 апреля 2011

Проблема в том, что IFooRepository не является производным от IRepository<>, а от IRepository<IFoo>.Если вы хотите использовать интерфейс как условие, вы должны реализовать свое собственное условие с помощью Where (t => t.DoSomeReflectionMagicHere ()) и немного поразмыслить.Другой подход заключается в использовании имени в качестве условия, например, связать все классы с репозиторием в его имени.

...