【发布时间】:2010-07-12 19:27:43
【问题描述】:
所以我必须设计一个适用于成对对象集合的类。对象之间存在一对一的映射。我希望班级的客户在使用我的班级之前已经建立了这个映射。
我的问题是让我的班级用户向我提供这些信息的最佳方式是什么?
是要这样的对的集合吗?
MyClass(IEnumerable<KeyValuePair<Object, Object>> objects)
或者像这样单独的集合?
MyClass(IEnumberable<Object> x, IEnumerable<Object> y)
或者还有其他选择吗?
我喜欢第一个,因为关系是明确的,我不喜欢它,因为它给客户带来了额外的工作。
我喜欢第二个,因为类型更原始,需要的工作更少,我不喜欢它,因为映射不明确。我必须假设顺序是正确的。
请给点意见?
【问题讨论】:
-
出于同样的原因,我喜欢第一个,关系是明确的。由于 KeyValuePair
在整个框架中很常见,因此我认为没有任何“额外工作”它可能具有的一个缺点是 KeyValuePair 推断 T2 以某种方式由 T1 键入,如果它们之间的关系更加对称,您可以滚动自己的类型(即 Pair )。