2010-08-28 250 views
1

我有几个通用列表,其中包含完全不同类型的数据。在通用列表之间共享信息的正确方法

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

无论如何,我在一个点list_A中的一些数据需要与List_B中的列表共享,反之亦然,我坚持什么才是正确的方法来做到这一点。我的第一个考虑是给List_B List_A的位置等等。

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

感谢您提供的任何方向。

编辑:也许再多几个字。

concider List_A是各种设备的时间集合列表,该列表将包含白天事件的值,如:生产时间(ProductionTime)产品X的数量或装备的时间量计划外事件如破损或操作员在洗手间中花费的时间等等。

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

反正MTBF的定义是ProductionTime /失败总和。

so ... List_B的任务是为equip_x确定MTBF,并且为了做到这一点,它需要来自List_A的一些信息。

我已经圈养MTBF计算作为List_B一个成员函数,但它仍然需要索姆信息从List_A ...

+3

你可以展示你到目前为止的代码示例吗? – Juliet 2010-08-28 17:07:07

+0

@Juliet - 没有任何代码 – fishhead 2010-08-28 17:16:25

+0

但应该有。无论是从真实的代码摘录或简单的模拟。如果你希望人们在答案中付出一些努力,你不应该至少试着让问题尽可能清楚吗? – 2010-08-28 17:54:07

回答

2

List_B的任务是determing MTBF为equip_x

而这正是你开始去错了,我想。 List_B应该做List事物,即存储东西并在被问到时生成它。

计算应该在代码的另一部分(另一图层)中完成。然后这只是在List_A和List_B之间创建适当的连接的问题。

单一责任,一致性和所有。

0

这听起来像你正在寻找的东西类似于C的“朋友”关键字++。也就是说,您希望一种类型能够访问另一种类型的受保护和私有成员。在C#中这样做并不容易,因为“friend”关键字不存在。请参阅此相关的问题更多详情: Why does C# not provide the C++ style 'friend' keyword?

没有“朋友”关键字,我想你最好的选择是定义为您提供的每类有,让功能的接口的每个定义接口。

+0

这对我来说听起来并不像他试图分享两个类之间的内部。但即使他是,C#提供了几种模拟“朋友”类的方法。请参阅InternalsVisibleToAttribute(http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx)和**内部**访问修饰符本身,它允许在同一个程序集中的类型*之间共享*。 – 2010-08-28 17:17:28