свойство?

ускаю веб-приложение с MVC3 и Ninject. В файле Global.asax мне также нужна одна зависимость, которая должна быть одиночной.

Я думал, что это должно быть так:

public class MvcApplication : NinjectHttpApplication
{
    IUserAuthentication _auth;

    public MvcApplication()
    {
        base.AuthenticateRequest += new EventHandler(MvcApplication_AuthenticateRequest);
    }

    protected override IKernel CreateKernel()
    {
        var _kernel = new StandardKernel(new SecurityModule());
        _auth = _kernel.Get<IUserAuthentication>();

        return _kernel;
    }

    void MvcApplication_AuthenticateRequest(object sender, EventArgs e)
    {
        _auth.ToString();
    }

Но потом я увидел, что_auth является нулевым, когдаMvcApplication_AuthenticateRequest называется.

Тогда я попробовал так:

public class MvcApplication : NinjectHttpApplication
{
    ItUserAuthentication _auth;
    IKernel _kernel;

    public MvcApplication()
    {
        _kernel = new StandardKernel(new SecurityModule());
        _auth = _kernel.Get<IUserAuthentication>();
        base.AuthenticateRequest += new EventHandler(MvcApplication_AuthenticateRequest);
    }

    protected override IKernel CreateKernel()
    {
        return _kernel;
    }

    void MvcApplication_AuthenticateRequest(object sender, EventArgs e)
    {
        _auth.ToString();
    }

Но теперь я вижу, что конструктор вызывается несколько раз, поэтому у меня будет несколько IKernel, и я предполагаю, что одиночные экземпляры не будут такими одиночными в моей области приложения.

как мне это сделать? Используя статическую переменную?

Ответы на вопрос(4)

Ваш ответ на вопрос