2011-05-30 48 views
0

我的设置是:交换数据 - DI,IoC的

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

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

DomainObject.ModelBList可以利用ModelA对象列表操作的数据被追加,但不neccessarily。我应该在哪里放置这个逻辑?

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

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

+2

我不明白这与DI或IoC有什么关系。我错过了什么吗? – 2011-05-30 16:15:47

回答

0

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

然后,我会将您提到的AddModelAObjects()方法添加到DomainObject。然后,您有两种选择,即如何将ModelA s转换为ModelB s - 您可以将ModelAConverter注入DomainObject的构造函数中,然后执行AddModelAObjects()ModelA的构造函数中的转换,并在ToModelB()中执行转换。我可能会用后者,但它取决于对象还有什么要做。