2016-07-14 34 views
1

我已閱讀關於分離用於渲染視圖的域模型和模型。就我所瞭解的每個領域模型而言,我都可以(推薦)在我的MVC/UI層中創建一個模型,並在從業務層帶來數據時填充我的UI模型。 int,float都很好,我只是填充它們。我應該在ViewModel(UI層)和領域模型(業務層)中使用相同的枚舉定義嗎?

我該如何處理枚舉?

我應該在UI層創建一個不同的枚舉定義,然後在將業務層的信息帶到UI層時映射枚舉嗎?或者我的業務層中定義的枚舉在我的UI層中使用相同的枚舉是否正確?

+1

使用相同的枚舉,更麻煩。 –

+0

對於這個問題。這是一個很好的問題,但可能會被SO關閉,以引出僅基於觀點的答案。 – nashwan

回答

4

使用相同的枚舉。這樣可以減少混淆,讓你只需要一個地方查看問題,並且如果你需要修改,就可以更容易。

模型/視圖分離對於保持邏輯不纏結非常有用,但使用一組枚舉不會妨礙邏輯。

我會做的一個例外是,如果您需要保持代碼的不同部分共享標題,因爲您期望進行大量條件編譯或鏈接,但聽起來並不像這裏的情況。

+0

不一定。假設枚舉是你的域模型的一部分,如果你使用同一個模型,你將直接將你的視圖耦合到你的域模型。對我來說,如果不是綁定到View(通過ViewModel),而是通過API合約實際暴露枚舉,這聽起來更糟糕。這意味着這個域模型枚舉現在可能被另一個系統直接使用。 – nashwan

1

嗯,實際上枚舉是int(大部分時間)的快捷方式。

如果你想使用自動下拉列表對枚舉和更改文本,或者,如果你想「關閉」你的DAL作爲一個項目,通過例如,它可能是有用的,以製造類似

public enum ADalEnum : int 
{ 
    One = 1, 
    Two = 2, 
    Three = 3 
} 

...

public enum MappedEnum : int 
{ 
    One_Little_Indians = ADalEnum.One, 
    Two_Little_Indians = ADalEnum.Two, 
    Three_Little_Indians = ADalEnum.Three, 
} 

所以它會是「一樣的」。

相關問題