Ninject с веб-формами ASP.Net и MVC - PullRequest
7 голосов
/ 29 июня 2010

Я хочу использовать Ninject в проекте, который объединяет веб-формы ASP.Net и ASP.Net MVC.Я использую Ninject 2, но когда я использую NinjectHttpApplication из Ninject.Web.Mvc, он жалуется, когда я использую что-то вроде PageBase, что ядро ​​не создано.

У меня есть следующее в Global.asax, и я не уверен, что добавить.

public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication
{
    protected override void OnApplicationStarted()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
        RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    }

    protected override Ninject.IKernel CreateKernel()
    {
        return new StandardKernel(new ServiceModule());
    }
}

У кого-нибудь есть такая работа, которая может поделиться некоторыми мыслями или кодом по этому поводу?

Ответы [ 3 ]

2 голосов
/ 08 июля 2010

Как сказал Рубен, я поместил сообщение в список рассылки Ninject:

http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6

Короче, ответ таков: на самом деле это невозможно. Однако с помощью собственного класса PageBase вы можете сделать возможным внедрение свойств и методов (из ответа Нейта Кохари в Ninject Mailing List):

public abstract class PageBase : Page
{
  public IKernel Kernel { get; private set; }
  public PageBase() { Kernel = ...; }
  public void Page_Init() { Kernel.Inject(this); }
} 
1 голос
/ 08 июля 2010

Вот несколько очень хороших ресурсов о том, как использовать DI в веб-формах, которые я добавил в закладки некоторое время назад:

http://aspnetresources.com/articles/ioc_and_di_with_web_forms http://aspnetresources.com/articles/real_world_ioc_and_di_with_webforms

Надеюсь, это поможет.

1 голос
/ 30 июня 2010

1) Посмотрите в исходном коде как Mvc, так и не Mvc Ninject Extensions - код очень короткий и аккуратный

2) Перейдите в список рассылки ninject и задайте этот вопрос вместе счто вы узнали из источника.Там будет ответ или патч молниеносно

...