3

Я только начал работать с Ninject 2.0 с ASP.NET MVC 2. Итак, у меня есть интерфейс IMongoRepository и класс MongoRepository.Ninject 2.0: Передача различных параметров в зависимости от реализации

MongoRepository получает набор строк параметров.

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

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

_articlesRepository = new MongoRepository("Articles"); 

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

_pagesController = new MongoRepository("Pages"); 

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

Кстати, я просто узнал об IOC/DI; поэтому я открыт для любых советов от ниндзя МОК! Спасибо!

+0

Эта ссылка кажется многообещающей! http://stackoverflow.com/questions/3313940/ninject-to-bind-on-different-controllers – Abe

ответ

11

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

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

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