несколько ошибок в Pro Asp.net MVC 3 книги от aPress - PullRequest
2 голосов
/ 25 августа 2011

Я читаю эту книгу, и я, что бы я ни пытался, не могу заставить этот пример работать должным образом, так как он использует ninject, о котором я никогда даже не слышал, прежде чем я был бы признателен, если бы кто-нибудь мог помочь мне запустить его

Автор (ы) этой книги говорит, что я должен добавить новую папку (инфраструктуру) и добавить новый файл .cs (NinjectControllerFactory) в проект, а затем добавить следующий код к нему

private IKernel ninjectKernel;
public NinjectControllerFactory()
{
    ninjectKernel = new StandardKernel();
    AddBindings();
}

//problem with override
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
    return controllerType == null
        ? null
        : (IController) ninjectKernel.Get(controllerType);
}

Если я пытаюсь отладитьу меня есть проблема, поскольку VS говорит, что я не могу переопределить этот метод.Я просто удалил переопределение и попытался запустить его снова, но снова у меня возникла проблема с этой строкой кода:

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

Мне пришлось добавить его global.aspx -> Application_Start() метод, но у меня естьпроблема, поскольку VS говорит, что я должен привести его к IControllerFactory, поэтому я изменил его на

ControllerBuilder.Current
    .SetControllerFactory(new NinjectControllerFactory() as IControllerFactory);

, но теперь я получаю ArgumentNullException в этой строке.

Кто-нибудь знает, как я могу решить эту проблему?

1 Ответ

1 голос
/ 25 августа 2011

Вы либо хотите

  1. унаследовать свой класс от System.Web.Mvc.DefaultControllerFactory , который включает GetControllerInstance для переопределения
  2. для получения ninject.web.mvc , который уже реализует NinjectControllerFactory для вас
    (хотя похоже, что они используют другой механизм для MVC3?)
...