如何在给出通用参数时指定应实现某些特定的创建方法?

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

如何在赋予通用参数时指定应实现某些特定创建方法的方式?因为LIST[G -> create make end]不起作用:-(

class diagram

在我的特定情况下,* 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以拥有JANITZA_DEVICE,SUNSPEC_DEVICE,ABB_DEVICE等。将通用参数指定为MEASURING_POINT_MODBUS_DEVICE似乎是没有道理的,但是我该怎么办?指定我希望创建方法为devices: LINKED_SET[G]

希望描述足以理解,重构我认为这个问题是链接的-> make_from_file_path

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

explicit creation type not conforming to type of target

但我希望成为

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指定为其延迟的创建过程

generic-collections eiffel
1个回答
0
投票

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

问题中提到了一种可能的解决方案-提供有效的课程。另一种解决方案是将具有形式约束的形式泛型参数添加到CONSUMPTION_SECTOR_MODBUS_DEVICE_CSV,并将其用于SMA_INVERTER_MANAGER_CSV的实际泛型。

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