Как получить доступ к моим переменным в веб-методе? - PullRequest
0 голосов
/ 12 января 2012

Я использую ASP.NET Webforms и на одной странице я хочу сделать AJAX-вызов веб-метода в приведенном ниже коде. Проблема в том, что веб-методы статичны, и я не могу получить доступ к переменным страницы. Мне нужно, чтобы Ninject вводил зависимость. Есть ли способ сделать это в веб-методе?

public partial class Default : Ninject.Web.PageBase
{
    [Inject]
    public ISecurityController SecurityController { get; set; }


    [WebMethod]
    public static string DoSomething()
    {
        SecurityController.WriteToLog(); // Can't access SecurityController because it doesn't exist.
    }
}

Поскольку веб-методы статичны, даже глупо даже иметь их в коде страницы, потому что он не может взаимодействовать со страницей. Это изолированный остров в коде позади. Есть ли лучший способ сделать это? Или, по крайней мере, есть ли способ, как Ninject может каким-то образом вводить ISecurityController в веб-метод?

Спасибо за помощь.

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Вы можете напрямую получить его из ядра, используя метод IKernel.Get<T>():

[WebMethod]
public static string DoSomething()
{
    NinjectModule module = new YourModule();
    IKernel kernel = new StandardKernel(module);
    var controller = kernel.Get<ISecurityController>();
    controller.WriteToLog();
}
0 голосов
/ 12 января 2012

где-то в вашем приложении является единственным Ninject.ссылаться на этот синглтон в веб-методе.аналогичный процесс выполняется в Ninject.Web.PageBase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...