2011-05-30 72 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()中執行轉換。我可能會用後者,但它取決於對象還有什麼要做。