Ninject 2.0: передача разных параметров в зависимости от реализации - PullRequest
3 голосов
/ 02 сентября 2010

Я только начал работать с Ninject 2.0 с ASP.NET MVC 2. Итак, у меня есть интерфейс IMongoRepository и класс MongoRepository.

MongoRepository получает коллекцию строк параметров.

В зависимости отв коллекции, которую я хочу использовать, я передаю другое значение в параметре для MongoRepository.Я надеюсь, что я формулирую это правильно, но как бы я отобразил различные параметры в зависимости от используемого контроллера?

Например, в контроллере Article я бы назвал:

_articlesRepository = new MongoRepository("Articles");

ив PageController я бы назвал:

_pagesController = new MongoRepository("Pages");

То, что я хотел бы сделать, это просто сделать инжектор конструктора и просто передать в IMongoRepository.Есть идеи или предложения?

Кстати, я только что узнал о МОК / ДИ;Итак, я открыт для любых советов от ниндзя МОК!Спасибо!

1 Ответ

11 голосов
/ 15 сентября 2010

Попробуйте следующее:

Bind<IMongoRepository>().To<MongoRepository>().WhenInjectedInto<ArticleController>().WithConstructorArgument("topic", "Article");
Bind<IMongoRepository>().To<MongoRepository>().WhenInjectedInto<PagesController>().WithConstructorArgument("topic", "Pages");

Предполагая, что аргумент конструктора называется topic.

...