Búsqueda de sitios web

node.js - Inversify: inyección contextual con el nombre de la clase


Estoy intentando inyectar registradores en diferentes clases usando Inversify. Quiero pasar el nombre de la clase objetivo al registrador para categorizarlo.

El problema es que no puedo acceder al nombre del objetivo desde donde estoy creando la vinculación:

container.bind<log4js.Logger>(Types.Logger).toDynamicValue(context => {
    let className = context....?; // Finds class name
    return log4js.getLogger(className);
});

¿Hay alguna manera de hacer esto aparte de configurarlo una vez que el registrador se crea en el objeto que recibe el registrador?

¡Gracias!

Antoine

Respuesta #1

Actualización:
Esta nueva función hace posible acceder al nombre de la clase desde el contexto. Sin embargo, el nombre será minimizado. Esto se puede resolver comparando con la clase.

container.bind<Warrior>(TYPE.Warrior)to(Ninja).inActivation((context) => {
    const currentClass = context.currentRequest.bindings[0].implementationType;
    if (currentClass) {
        if (currentClass === Ninja) {
            // ...
        }
    }

Publicación original:
Gracias por hacer esta pregunta. Lo que estás buscando no es posible en este momento, pero he creado un problema en GitHub para asegurarnos de que hagamos algo al respecto. Puedes aprender más al respecto en https://github.com/inversify/InversifyJS/issues/576