gpt4 book ai didi

javascript - Aurelia DI 通过抽象基和/或接口(interface)获取类的实例

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:06 24 4
gpt4 key购买 nike

我知道这可能超出了 Aurelia 的 DI 容器的范围,但也许不是。

我希望能够随机返回从接口(interface)继承的任何类的实例。

例如,我有...

interface MonsterRecipe

class KoboldRecipe implements MonsterRecipe

class GoblinRecipe implements MonsterRecipe

这一部分的第一部分是获取要从中随机化的类数组。

我试过 let allRecipes = container.getAll(MonsterRecipe) 但它返回 0 个项目。

我怀疑我可能需要一些明确的注册?

如果这完全有缺陷......当我请求 MonsterRecipe 时,有没有其他方法可以获得随机的 GoblinRecipe 或 KoboldRecipe。

最佳答案

也许你可以明确地将它们放在一个数组中:

export const RECIPES = [KoboldRecipe, GoblinRecipe];

在配置时:

container.registerHandler(MonsterRecipe, (container, key, resolver) => {
let random = RECIPES[Math.floor(Math.random() * RECIPES.length)];
return new random();
});

(这里不是单例)

--编辑:

使用小型装饰器构建数组:

export const RECIPES: Function[] = [];

function randomRecipe(target: Function) {
RECIPES.push(target);
}

export class MonsterRecipe {
getName() {
return "nothing";
}
}

@randomRecipe
export class KoboldRecipe extends MonsterRecipe {
getName() {
return "KoboldRecipe";
}
}

@randomRecipe
export class GoblinRecipe extends MonsterRecipe {
getName() {
return "GoblinRecipe";
}
}

关于javascript - Aurelia DI 通过抽象基和/或接口(interface)获取类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com