2016-07-14 2 views
1

Ich habe gelesen über die Trennung von Domänenmodellen und Modellen zum Rendern von Ansichten. Soweit ich es für jedes Domänenmodell verstehe, kann ich (empfohlen) ein Modell in meiner MVC/UI-Schicht erstellen und während ich Daten aus der Business-Schicht bringe, befülle ich mein UI-Modell. int, float ist alles in Ordnung, ich bevölkere sie einfach.Soll ich dieselben Enums-Definitionen in ViewModel (UI-Ebene) und Domänenmodell (Business-Ebene) verwenden?

Wie soll ich mit enums umgehen?

sollte ich in meiner UI-Ebene insgesamt eine andere Enum-Definition erstellen und die Enumeration dann auch zuordnen, während ich Informationen aus meiner Business-Schicht in die UI-Ebene bringe? Oder ist es in Ordnung, wenn in meiner Business-Schicht dieselbe Aufzählung definiert ist, die auch in meiner UI-Ebene verwendet werden soll?

+1

Verwenden Sie die gleiche Enum, viel weniger Ärger. –

+0

+1 für die Frage. Dies ist eine gute Frage, wird aber wahrscheinlich von SO heruntergefahren, um nur auf Meinungen basierende Antworten zu erhalten. – nashwan

Antwort

4

Verwenden Sie die gleichen Enums. Das reduziert die Verwirrung, gibt Ihnen nur einen Ort, an dem Sie nachschlagen können, und macht es einfacher, wenn Sie Änderungen vornehmen müssen.

Die Trennung zwischen Modell und Ansicht ist nützlich, um die Logik nicht zu verändern, aber die Verwendung eines einzigen Satzes von Enums wird dies nicht verhindern.

Eine Ausnahme würde ich machen, wenn Sie verschiedene Teile Ihres Codes von Sharing-Headern behalten müssten, weil Sie eine Menge bedingte Kompilierung oder Verknüpfung erwarten, aber es klingt hier nicht so.

+0

Nicht unbedingt. Angenommen, die Aufzählung ist Teil Ihres Domänenmodells, wenn Sie dieselbe verwenden, wird Ihre Ansicht direkt mit Ihrem Domänenmodell gekoppelt. Das hört sich für mich noch schlimmer an, wenn Sie statt eines Views (über ein ViewModel) das Enum durch einen API-Vertrag offenlegen. Dies würde bedeuten, dass diese Domain Model-Enumeration möglicherweise direkt von einem anderen System verwendet werden könnte. – nashwan

1

Nun, eigentlich Enums sind Int (die meiste Zeit) Verknüpfungen.

Wenn Sie für Aufzählungen Autodropdownlist gebrauchen und die Texte ändern, oder wenn Sie wollen Ihre DAL als Projekt „schließen“, durch Beispiel kann es nützlich sein, so etwas wie

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

zu machen ...

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

So wird es "gleich" sein.

Verwandte Themen