关于这个问题的一点背景故事:
我正在为我的本地酒吧编写一个 POS 系统,我希望它能够启用插件。对于这个特殊问题,我将使用以下场景:
我有一个计算器类,顾名思义,它会执行所有涉及当前收据、增值税等产品的计算。我希望这个类可以通过插件(在不同的程序集中)进行扩展,以添加功能到使用我们使用的这些特殊硬币。计算器只需遍历收据上的所有产品(在其构造函数中传递)以计算总金额。收据类有一个包含所有产品对象的列表。内置产品类没有任何与硬币相关的成员,这些在插件程序集中的另一个产品类中。
这里的问题是,如何让我的主程序动态选择正确的类用于产品?
我正在考虑将所有插件加载到列表或字典中,然后简单地遍历它们以检查产品类的覆盖是否存在,然后使用它,但我仍然需要某种通用接口,这不是一个选项。我确切地知道如何在 PHP 中做到这一点,但是可以在运行/安装时用更新的源编辑/替换源。
在此先感谢,汤姆。
编辑:为了简化问题:是否可以让外部插件程序集使用新方法扩展内置程序集,而不必在现有应用程序中对方法的名称/委托/任何内容进行硬编码?