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