Конфигурация Ninject - дженерики - PullRequest
0 голосов
/ 10 января 2011

У меня есть группа базовых репозиториев, которые настроены следующим образом ...

Bind<IRepository<SomeObject>>().To<SomeObjectRepository>().WithConstructorArgument("connection", connection);
Bind<IRepository<SomeOtherObject>>().To<SomeOtherObjectRepository>().WithConstructorArgument("connection", connection);
//and so on

Эти репозитории просты - весь класс выглядит так.

public class SomeObjectRepository : Repository<SomeObject>
{
    public SomeObjectRepository (string connection) : base(connection)
    {
    }
}

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

Bind(typeof(IRepository<>)).To(typeof(Repository<>)).WithConstructorArgument("connection", connection);

, который, конечно, сломался и получил ошибку

Ошибка активации IRepository {SomeObject} с использованием привязки IRepository {T} к репозиторию {T} Нет конструктора для создания экземпляра типа реализации.

Почему бы это не сработало?

1 Ответ

0 голосов
/ 25 февраля 2011

Немного поздно, но вам нужно привязать IRepository к SomeObjectRepository.

...