Inversify: контекстная инъекция с именем класса

Я пытаюсь ввести логгеры в разные классы, используя Inversify. Я хочу передать имя целевого класса регистратору, чтобы классифицировать его.

Проблема в том, что я не могу получить доступ к имени цели, откуда я создаю привязку:

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

Есть ли способ сделать это, кроме как установить его после создания регистратора в объекте, получающем регистратор?

Спасибо!

Antoine

1 ответ

Решение

Обновление:
Эта новая функция позволяет получить доступ к имени класса из контекста. Имя будет уменьшено, хотя. Это может быть решено путем сравнения с классом.

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

Исходное сообщение:
Спасибо, что задали этот вопрос. То, что вы ищете, на данный момент невозможно, но я создал проблему в GitHub, чтобы мы могли что-то с этим сделать. Вы можете узнать больше об этом на https://github.com/inversify/InversifyJS/issues/576

Другие вопросы по тегам