Inyección de dependencia de inyección en MVC3 - Fuera de un controlador

Estamos usando Ninject en nuestro proyecto MVC3 para hacer una inyección de dependencia. Usé NuGet para agregar referencias de paquetes a los paquetes Ninject y Ninject.MVC3. Cuando hice esto, creó una clase NinjectMVC3 en mi carpeta App_Start:

public static class NinjectMVC3
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    public static void Start()
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
        DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
        bootstrapper.Initialize(CreateKernel);
    }

    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        RegisterServices(kernel);
        return kernel;
    }

    private static void RegisterServices(IKernel kernel)
    {           
        kernel.Bind<IPrincipal>().ToMethod(c => HttpContext.Current.User);
    }
}

Hasta ahora, esto ha funcionado muy bien para resolver dependencias en mis controladores:

public class HomeController : Controller {
    protected IPrincipal principal { get; set; }

    public HomeController(IPrincipal principal) {
        this.principal = principal;
    }
}

Este controlador tiene una dependencia de IPrincipal que he configurado en mi clase bootstrapper para resolver en HttpContext.Current.User. Tengo otra clase que depende de IPrincipal que no es un controlador:

public class NonControllerClass
{
    protected IPrincipal Principal { get; set; }

    public NonControllerClass(IPrincipal principal) {
    }
}

¿Cómo haría para resolver esta dependencia? ¿Cómo lo haría si no fuera un parámetro del constructor? }

Respuestas a la pregunta(1)

Su respuesta a la pregunta