Это мой пользовательский код связывания модели для класса BaseContentObject:
public class BaseContentObjectCommonPropertiesBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext == null)
{
throw new ArgumentNullException("controllerContext");
}
if (bindingContext == null)
{
throw new ArgumentNullException("bindingContext");
}
BaseContentObject obj = (BaseContentObject)base.BindModel(controllerContext, bindingContext);
IContentRepository repository = new XmlContentRepository(obj.ContentType);
// do something with the object and repository here...
return obj;
}
}
Я упустил некоторый код для ясности.
Именно эта линия меня интересует.
IContentRepository repository = new XmlContentRepository(obj.ContentType);
У меня все настроено для внедрения зависимости, и оно работает с моими контроллерами.Я использую Ninject 2. Каким-то образом мне нужно подключить DI внутри связывателя модели (и у меня аналогичная проблема с фильтрами действий MVC) - как в пользовательских связывателях, так и в фильтрах настраиваемых действий, мне иногда нужно получить доступ к хранилищуили службы, потому что мне нужен доступ к базе данных.
Что еще хуже, хранилище содержимого не исправлено, оно зависит от "obj.ContentType".
Все, что я нашел такfar указывает на документацию Ninject, но в вики приведены только самые простые примеры, и, похоже, она еще не обновлена до версии 2.