在通用列表之间共享信息的正确方法是什么

时间:2010-08-28 16:59:27

标签: c# .net

我有几个通用列表,包含完全不同类型的数据。

在我的通用列表中,我创建了一些方法,可以完成从该级别开始的所有处理 - 也就是说,我有成员函数执行汇总并返回一个值或一组值。我将这个计算基于通用列表的原因之一就是它使我在阅读代码时更容易阅读和维护......但这是主观的猜测。

无论如何我认为list_A中的一些数据需要与List_B中的List共享,反之亦然,我仍然坚持这样做的正确方法。我的首要考虑是给List_B提供List_A的位置等等。

或...有些东西我完全错过了我应该使用的一些模式。

感谢您提供的任何指示。

编辑:也许还有几句话。

认为List_A是各种设备的时间集合列表,该列表将包含白天事件的值,如:生成的时间量(ProductionTime)产品'X'或未计划的装备停机时间事件就像破损或操作员在洗手间花费的时间等等。

现在认为List_B是已修复的设备组件历史记录的容器。 在工业中,有标准的性能指标,如平均故障间隔时间(MTBF)等。

无论如何,MTBF的定义是ProductionTime /失败总和。

所以... List_B的任务是确定equip_x的MTBF,为了做到这一点,它需要List_A中的一些信息。

我已将MTBF的计算作为List_B中的成员函数,但仍需要来自List_A的som信息......

2 个答案:

答案 0 :(得分:2)

  

List_B的任务是确定equip_x的MTBF

这就是我认为你开始出错的地方。 List_B应该做List事物,即存储东西并在被问到时生成它。

计算应该在代码的另一部分(另一层)完成。然后,只需在List_A和List_B之间创建适当的连接即可。

单一责任,一致性等等。

答案 1 :(得分:0)

听起来你正在寻找类似C ++中的“friend”关键字。也就是说,您希望一种类型能够访问另一种类型的受保护和私有成员。在C#中没有简单的方法,因为“friend”关键字不存在。有关详细信息,请参阅此相关问题: Why does C# not provide the C++ style 'friend' keyword?

如果没有“friend”关键字,我认为您最好的选择是定义一个接口,该接口提供您希望每种类型具有的功能,并让每个接口定义该接口。