Я хотел бы использовать возможности Ninject для работы с DependencyResolver, чтобы я мог сделать что-то вроде этого:
string contentType = "Page";
IContentRepository<contentType> repository = System.Web.Mvc.DependencyResolver.Current.GetService<IContentRepository<contentType>>();
contentType
является динамическим, поэтому может быть любым (из нескольких вариантов)и я не хочу писать if..else..
Очевидно, что выше не работает.Я должен как-то получить Type из строки.IContentRepository является универсальным и принимает типы, производные от класса ContentBase, что делает Page (в приведенном выше примере).
В MVC 2 со старым Ninject я делал это через фабрику пользовательских хранилищ (IRepositoryFactory
), котораявозьмет строку и затем передаст ее конструктору хранилища.Но этот подход работал с неуниверсальными репозиториями, и он также требовал специальных конструкторов в репозитории, которых я хотел бы избежать, если это возможно.
Это вне контроллера, поэтому я не могу использовать внедрение конструктора контроллера (У меня это работает на самом деле).Я действительно застрял с этим.