2010-08-28 249 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