这是关于类设计和代码复制的另一个问题。代码重复与否?
这是场景: 我们有一个名为SupportedFlow的属性。 此属性是只读的,并返回一个FlowInfo对象的列表,每个FlowInfo对象表示一个流(外部系统发送的物理文件),其中包含一些属性,如FlowType(表示流类型的对象,例如“客户流”或“档案流”)。
我们正在构建的系统中的其他一些类需要知道“支持的流类型”列表,他们可以通过读取上述对象的SupportedFlow属性并应用简单的LINQ查询来获取它:SupportedFlow.Select(p = > p.FlowType).ToList()
其他一些类可能需要一个类似的列表,通过在SupportedFlow列表上应用一个过滤器,通过LINQ到对象扩展方法获得其中,对于所有支持的流匹配任何条件(例如:与客户相关的支持流量)。
这是我的问题:在这种情况下,什么是最好的设计选择,向原始对象(如SupportedFlowType或CustomerRelatedSupportedFlows)添加新属性,将原始属性SupportedFlow应用到适当的LINQ查询,或者重复LINQ每次需要时在系统的其他类中查询?
从某种意义上说,我猜这是一个代码重用的例子,但同时我不确定通过添加新属性使原始对象复杂化是最好的选择,因为这些LINQ查询非常简单,新的属性不会增加代码库的清晰度。
感谢您的回复。
干杯
感谢您的回复。因此,您建议创建一个Util类,其中包含一些方法,如“GetSupportedFlowType”或“GetCustomerRelatedSupportedFlows”,它将FlowInfo对象列表作为参数,并返回通过将LINQ应用到对象查询而获得的列表。这听起来很不错! – 2014-12-06 16:15:51
@EnricoMassone是的,除非你可以实现一个单一的函数,它可以根据传递给它的参数做所有事情。我对linq或者你的源代码不太熟悉,不知道这是否可行 – 2014-12-06 17:02:42