将集合中的对象平均化并像处理同一集合中的新对象一样处理

时间:2012-10-08 13:35:51

标签: c# winforms

我有一组在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”&gt;我在哪里使用它,检查内部集合的计数
  3. 将MyCollection转换为类似字典的对象,我可以为每个对象指定一个“组”,然后我可以通过组ID获取对象。
  4. 欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

您可以使用Composite design pattern,其中一个很好的示例是.net中的控件树:

每个IMyInterace都可以有一个IMyInterfaces集合,你可以选择如何处理不相关的属性(你总是可以返回null)