[英]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]
as G -> MEASURING_POINT_MODBUS_DEVICE create make_from_file_path end
。
我希望SMA_INVERTER_MANAGER_CSV
class 能够进入devices: LINKED_SET[G]
能够拥有 JANITZA_DEVICE、SUNSPEC_DEVICE、ABB_DEVICE 等。将通用参数作为 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
的实际泛型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.