在给出泛型参数时如何指定它应该实现一些特定的创建方法?

How to specify when giving a generic parameter that it should implement some specific creation method?

在给一个泛型参数时如何指定它应该实现一些特定的创建方法?因为 LIST[G -> create make end] 不起作用:-(

在我的特殊情况下, * SMA_INVERTER_MANAGER_CSV 继承自 CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV 设备列表,如 devices: LINKED_SET[G]G -> MEASURING_POINT_MODBUS_DEVICE create make_from_file_path end

我希望 SMA_INVERTER_MANAGER_CSV class 能够进入 devices: LINKED_SET[G] 能够拥有 JANITZA_DEVICE、SUNSPEC_DEVICE、[=42] =], 等等。将通用参数设置为 MEASURING_POINT_MODBUS_DEVICE 似乎是没有意义的,但是我如何指定我希望创建方法是 make_from_file_path

希望描述足以理解,重构我认为这个问题是有联系的 ->

目前我发现目前唯一的解决方法是

class
    SMA_INVERTER_MANAGER_CSV

inherit
    CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV[SUNSPEC_DEVICE]

create
    make


end

但我希望它是

class
    SMA_INVERTER_MANAGER_CSV

inherit
    CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV[MEASURING_POINT_MODBUS_DEVICE]

create
    make


end

这会产生一致性问题,因为 MEASURING_POINT_MODBUS_DEVICE 通用参数没有将 make_from_file_path 指定为其延迟的创建过程

不仅仅是一致性问题。 MEASURING_POINT_MODBUS_DEVICE 被推迟。因此,它不能用作 CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV 的实际参数。如果允许,CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV 将如何创建延迟 class 的实例?

问题中提到了一种可能的解决方案——提供有效的 class。另一种解决方案是使用相应的约束向 SMA_INVERTER_MANAGER_CSV 添加一个正式的泛型参数,并将其用于 CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV.

的实际泛型。