2012-10-08 106 views
1

內的新對象我有在UI平均集合內的對象和治療等同一集合

接口(極度簡化)鏡像的定製對象的集合

public interface IMyInterface 
{ 
    string Name { get; set; } 
    int Data { get; set; } 
} 

收集

MyCollection<IMyInterface> Foo; 

UI(以合理的方式顯示Foo的內容,例如)

Name: [ asdf ] Data: [ 1234 ] 
Name: [ qwer ] Data: [ 5678 ] 
Name: [ zxcv ] Data: [ 0000 ] 

我現在已經在我的程序需要能夠打開兩個IMyInterface類型和顯示的平均數據,單IMyInterface對象一起:

Name: [ asdf ] Data: [ 1234 ] 
Name: [ qwer ] Data: [ 5678 ] 
Name: [ zxcv ] Data: [ 0000 ] 
Name: [ 2 Objects (asdf, qwer) ] Data: [ 3456 ] 

我一定能走出asdfqwer從這個新的平均水平。

我能達到這個目標的最佳方法是什麼?我覺得我有三種選擇:

  1. 做一個類型從IMyInterface繼承與內部 集合IMyInterface秒。但是,這樣的感覺有點骯髒,因爲某些屬性是不可取的。
  2. 更換Foo與`MyCollection的>何地我使用它,做一個檢查內收集的數
  3. 打開MyCollection的成類似於字典的對象,我可以指定每個對象的「組」,然後我可以通過他們的組ID來獲得對象。

歡迎任何建議。

+1

什麼決定哪些項目被平均?您在示例中省略了'zxcv'。 –

+0

winforms? WPF? ASP?你使用的是什麼UI技術? – MattDavey

+0

@zxcv這將是用戶選擇,以確定哪些項目是平均的(在我的實際應用中,這是由ListView完成的 - 用戶可以激活單個項目或選擇多個項目來激活)。 –

回答

2

可以使用Composite design pattern,一個很好的示例,其中在.NET控件樹:

每個IMyInterace可以IMyInterfaces的集合,和你的選擇,做什麼用不相關的屬性(可以總是返回一個空值)

+0

編輯 - 「複合」模式,而不是「組成」 –

+0

是的,謝謝你糾正 – YavgenyP