1

我有一组反映在 UI 中的自定义对象

界面(极其简化)

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

收藏

MyCollection<IMyInterface> Foo;

FooUI(以合理的方式显示内容,例如)

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使用 s的内部集合创建一个继承自的类型IMyInterface。然而,这感觉有点脏,因为一些属性是不可平均的。
  2. 替换Foo为 `MyCollection> 并在我使用它的地方检查内部集合的计数
  3. 将 MyCollection 变成一个类似字典的对象,我可以在其中为每个对象指定一个“组”,然后我可以通过它们的组 ID 取出对象。

欢迎任何建议。

4

1 回答 1

2

您可以使用复合设计模式,其中一个很好的示例是 .net 中的控件树:

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

于 2012-10-08T14:04:23.280 回答