Estoy seguro de que esta es una pregunta estúpida, ya que estoy suponiendo que la respuesta es "Cuando el objeto es instanciado por Ninject" ... pero quiero volver a comprobar ...¿Cuándo se activa el Activador de Ninject?
Para dar un poco más de contexto como a por qué estoy haciendo la pregunta, tengo una aplicación asp mvc que implementa NinjectHttpApplication. Sin embargo, dentro de la anulación de OnApplicationStarted necesito activar un método en una instancia de singleton que esté enlazada dentro de Ninject.
El problema es que el Kernel está expuesto, pero no debe utilizarse como un localizador de servicios, por lo que podría recuperar el objeto y llamar a DoSomeSetup(); método, pero parece un fracaso. Que yo sepa, la instancia de NinjectHttpApplication no es DI porque el archivo Global.asax la usa directamente, así que no pude ingresarla a la aplicación de esa manera.
Esto me deja con otra opción que sería agregar OnActivation (x => x.DoSomeSetup()); llamar al enlace, sin embargo, este objeto solo se usa en ciertos lugares, por lo que no es como la primera vez que carga una página, el controlador lo requerirá, por lo que si OnActivation espera a que se cree la primera instancia, puede que no suceda. Un rato.
Con suerte eso no es demasiado confuso :)
¿Podría dar un ejemplo rápido de inyección de propiedad en NinjectHttpApplication? Solo para asegurarme de que te entiendo correctamente. – Grofit
Agregue una propiedad pública con un colocador y agregue el atributo [Inyectar]. –