跳到主要内容
版本:Next

激活

每当解析服务时,都会分发激活事件。激活处理程序接收上下文和解析值,并返回处理后的解析值。

interface Weapon {
damage: number;
}

export class Katana implements Weapon {
#damage: number = 10;

public get damage(): number {
return this.#damage;
}

public improve(): void {
this.#damage += 2;
}
}

const container: Container = new Container();
container.bind<Weapon>('Weapon').to(Katana);
container.onActivation(
'Weapon',
(_context: ResolutionContext, katana: Katana): Katana | Promise<Katana> => {
katana.improve();

return katana;
},
);

// Katana.damage is 12
const katana: Weapon = container.get<Weapon>('Weapon');

有多种方法可以提供激活处理程序:

当多个激活处理程序绑定到一个服务标识符时,postConstruct 处理程序会在任何其他处理程序之前被调用。之后,调用绑定处理程序。然后,调用容器处理程序,从根容器开始,向下到后代容器,在具有绑定的容器处停止。