Я хочу использовать Ninject в проекте, который комбинирует веб-формы ASP.NET и ASP.NET MVC. Я использую Ninject 2, но когда я использую NinjectHttpApplication от Ninject. Сеть. Mvc это жалуется, когда я использую somethings как 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());
}
}
У кого-то есть эта работа где-нибудь, кто мог совместно использовать некоторые мысли или код этого?
Как сказал Рубен, я разместил сообщение в списке рассылки Ninject:
http://groups.google.com/group/ninject/browse_thread/thread/317fc48387399aa6
Короткий ответ: к сожалению, это не совсем возможно. Однако с помощью пользовательского класса PageBase вы можете сделать инъекцию свойств и методов возможной (из ответа Нейта Кохари в списке рассылки Ninject):
public abstract class PageBase : Page
{
public IKernel Kernel { get; private set; }
public PageBase() { Kernel = ...; }
public void Page_Init() { Kernel.Inject(this); }
}
вот несколько очень хороших ресурсов о том, как использовать DI в веб-формах, которые я недавно добавил в закладки:
http://aspnetresources.com/articles/ioc_and_di_with_web_forms http: //aspnetresources.com/articles/real_world_ioc_and_di_with_webforms
Надеюсь, это поможет.
1) Посмотрите в исходном коде как Mvc, так и не-Mvc Ninject Extensions - код очень короткий и аккуратный
2) Перейдите в список рассылки ninject и задайте этот вопрос вместе с тем, что вы ' я узнал из первоисточника. Будет ответ или патч быстро светится