添加的参数是否以 class 错误形式存在?

Are added parameters in a child class bad form?

我有一个成分列表,其中每个成分都包含一个变量结构。

变量的结构对所有 Ingredients 都是通用的;然而,有时成分会有一个唯一的变量,在这种情况下,变量不在结构中,而是定义为 class 变量。

我已将成分分成 classes 以尝试使用工厂模式,'Ingredient' 是基础 class 和其他派生的 classes 具有独特参数和覆盖的方法。

当我创建一个成分列表时,只有变量的结构被传递给列表,而子成分的额外参数丢失了。

由于系统持久化对象的方式,我无法创建成分接口列表 - 只能持久化实例化对象(存储到文件)。

即使在大多数情况下不会使用该参数,我是否只将子 class 的参数添加到变量结构中?这对我来说似乎'clunky',但我似乎想不出另一种保存参数数据的方法。

您应该能够存储 Function Blocks as Persistent. From what I understand, you are trying to store a list of Interfaces in the Persistent memory. CODESYS always treats variables declared with the type of an interface as references, so instead of storing references (kinda like pointers) as persistent, store the initialized objects themselves and use their interfaces in code. If you do this, try to avoid creating big Function blocks, because the function block instance is stored entirely in permanent memory and not just the marked variable