C#中的吸气剂是否可以在线缓存其结果?

问题描述 投票:0回答:2

我一直在研究Discord机器人,并且我代表服务器的抽象类之一(“ Bot Contexts”包含以下数据。

public virtual Command[] ContextSpecificCommands { get; } = null;

在用户定义的上下文中,我希望它们可以覆盖此内容(如果具有此代码的服务器需要这样做)。但是,有一个问题是我希望命令在上下文范围内是单例。这意味着CommandFooCoolContextNumberOne中只能存在一次,并且在CoolContextNumberTwo中也可以存在(作为CommandFoo的单独实例),但是单个上下文中不能包含CommandFoo的两个实例。] >

我的问题来自吸气剂的行为。如果用户这样做...

public override Command[] ContextSpecificCommands => new Command[] {
    new CommandFoo()
};

然后将实例化CommandFoo 每次

引用了ContextSpecificCommands。

是否有任何方法可以确保将ContextSpecificCommands内联缓存,以便仅实例化该容器数组一次?我想避免要求用户指定一个字段,并在可能的情况下指向该字段。

我一直在研究Discord机器人,并且我代表服务器的抽象类之一(“ Bot Contexts”)包含以下数据。公共虚拟Command [] ContextSpecificCommands {get; } = ...

c# caching singleton getter
2个回答
1
投票

这在没有添加额外代码的情况下是不可能的。


1
投票

此代码用于智力练习,不建议使用!

© www.soinside.com 2019 - 2024. All rights reserved.