Skip to content

Latest commit

 

History

History
25 lines (22 loc) · 758 Bytes

auto_named_factory.md

File metadata and controls

25 lines (22 loc) · 758 Bytes

Auto named factory

Binds an abstraction to an auto-generated Factory that return elements by given name.

@injectable()
class Ninja implements Ninja {
    private _katana: Weapon;
    private _shuriken: Weapon;
    public constructor(
        @inject("Factory<Weapon>") weaponFactory: (named: string) => Weapon
    ) {
        this._katana = weaponFactory("katana");
        this._shuriken = weaponFactory("shuriken");
    }
}
container.bind<Ninja>("Ninja").to(Ninja);
container.bind<Weapon>("Weapon").to(Katana).whenTargetNamed("katana");
container.bind<Weapon>("Weapon").to(Shuriken).whenTargetNamed("shuriken");
container.bind<interfaces.AutoNamedFactory<Weapon>>("Factory<Weapon>")
         .toAutoNamedFactory<Weapon>("Weapon");