我的设置是:
class ModelA { ... }
interface IModelARetriever { IEnumerable<ModelA> GetObjects(); }
class ModelB { ... }
class DomainObject { List<ModelB> ModelBList; }
DomainObject.ModelBList
可以使用来自ModelA
对象列表的操纵数据附加,但不是必需的。我应该把这个逻辑放在哪里?
我应该在DomainObject
中创建一个需要IEnumerable<ModelA>
的方法吗?这意味着为可以创建ModelB对象的每个可能的数据源更改DomainObject
。
我应该创建一个单独的interface ModelBFactory
并扩展它吗?这听起来不错,但只是想要专家意见。
答案 0 :(得分:0)
如果我正确阅读了问题,ModelA
个对象可以转换为ModelB
个对象。我要求在ToModelB()
上调用ModelA
方法。如果转换很简单(例如,只复制ModelA
属性值的子集),我会直接在ToModelB()
中实现它;如果它更复杂(比如,某些属性值的条件复制,值的组合,算术等),我会有一个ModelAConverter
类来完成这项工作。
然后我将您提到的AddModelAObjects()
方法添加到DomainObject
。然后,您可以选择将ModelA
转换为ModelB
的两种选择 - 您可以将ModelAConverter
注入DomainObject
的构造函数并在{{AddModelAObjects()
中进行转换1}},或ModelA
的构造函数,并在ToModelB()
中进行转换。我可能会选择后者,但这取决于对象还需要做什么。