在类之间交换数据 - DI,IoC

时间:2011-05-30 15:53:02

标签: c# dependency-injection inversion-of-control

我的设置是:

class ModelA { ... }
interface IModelARetriever {  IEnumerable<ModelA> GetObjects(); }

class ModelB { ... }
class DomainObject { List<ModelB> ModelBList; }

DomainObject.ModelBList可以使用来自ModelA对象列表的操纵数据附加,但不是必需的。我应该把这个逻辑放在哪里?

我应该在DomainObject中创建一个需要IEnumerable<ModelA>的方法吗?这意味着为可以创建ModelB对象的每个可能的数据源更改DomainObject

我应该创建一个单独的interface ModelBFactory并扩展它吗?这听起来不错,但只是想要专家意见。

1 个答案:

答案 0 :(得分:0)

如果我正确阅读了问题,ModelA个对象可以转换为ModelB个对象。我要求在ToModelB()上调用ModelA方法。如果转换很简单(例如,只复制ModelA属性值的子集),我会直接在ToModelB()中实现它;如果它更复杂(比如,某些属性值的条件复制,值的组合,算术等),我会有一个ModelAConverter类来完成这项工作。

然后我将您提到的AddModelAObjects()方法添加到DomainObject。然后,您可以选择将ModelA转换为ModelB的两种选择 - 您可以将ModelAConverter注入DomainObject的构造函数并在{{AddModelAObjects()中进行转换1}},或ModelA的构造函数,并在ToModelB()中进行转换。我可能会选择后者,但这取决于对象还需要做什么。