nestjs在插件系统运行时替换服务

nestjs在插件系统运行时替换服务,nestjs,Nestjs,nestjs应用程序的插件系统 我有一些基于“核心”模块的服务。 这个模块应该是一个完全密封的黑盒子。 添加新功能的唯一方法是在系统上注入新模块,最终, 更换核心模块的某些服务 问题是: 如何在运行时替换服务?(@可注射) 想法是用一个具有增强功能的新类替换旧类。我实际上正在做类似的事情,使用一个动态模块允许传入一个类,然后使用工厂和自定义提供程序来确定要使用的类的哪个变体,默认的还是用户提供的自定义的。是的,我已经尝试过了,但是,它不起作用,我的意思是,旧模块(核心隐藏模块)仍然使用旧类。如果

nestjs应用程序的插件系统

我有一些基于“核心”模块的服务。 这个模块应该是一个完全密封的黑盒子。 添加新功能的唯一方法是在系统上注入新模块,最终, 更换核心模块的某些服务

问题是: 如何在运行时替换服务?(@可注射)


想法是用一个具有增强功能的新类替换旧类。

我实际上正在做类似的事情,使用一个动态模块允许传入一个类,然后使用工厂和自定义提供程序来确定要使用的类的哪个变体,默认的还是用户提供的自定义的。是的,我已经尝试过了,但是,它不起作用,我的意思是,旧模块(核心隐藏模块)仍然使用旧类。如果在全局模块中以这种方式声明提供程序,这将解决问题:为什么要在运行时更改服务?为了实现插件,以功能方式将自定义逻辑添加到黑盒中。
@Module({
providers: [{provide: OldServiceClass, useClass: NewServiceClass}]
})
export class FeatureModule {}