我一直在研究Discord机器人,并且我代表服务器的抽象类之一(“ Bot Contexts”包含以下数据。
public virtual Command[] ContextSpecificCommands { get; } = null;
在用户定义的上下文中,我希望它们可以覆盖此内容(如果具有此代码的服务器需要这样做)。但是,有一个问题是我希望命令在上下文范围内是单例。这意味着CommandFoo
在CoolContextNumberOne
中只能存在一次,并且在CoolContextNumberTwo
中也可以存在(作为CommandFoo
的单独实例),但是单个上下文中不能包含CommandFoo
的两个实例。] >
我的问题来自吸气剂的行为。如果用户这样做...
引用了ContextSpecificCommands。public override Command[] ContextSpecificCommands => new Command[] { new CommandFoo() };
然后将实例化
CommandFoo
每次
是否有任何方法可以确保将ContextSpecificCommands
内联缓存,以便仅实例化该容器数组一次?我想避免要求用户指定一个字段,并在可能的情况下指向该字段。
我一直在研究Discord机器人,并且我代表服务器的抽象类之一(“ Bot Contexts”)包含以下数据。公共虚拟Command [] ContextSpecificCommands {get; } = ...
这在没有添加额外代码的情况下是不可能的。
此代码用于智力练习,不建议使用!