Frage

Ich überprüfe den Code der scharfen Architektur.Soweit ist es cool, aber ich habe Probleme, meinen Kopf umzusetzen, wie DDD-Wertobjekte im Rahmen implementiert werden (scheint dies nicht in diesem Code zu erwähnen).Ich gehe davon aus, dass die Basis-Entitätsklasse und die Repository-Basis nur für Entitäten verwendet werden sollen.Alle Ideen zum Implementieren von Wertobjekten im Rahmen?

War es hilfreich?

Lösung

Im scharfen Bogen gibt es ein KlassenvalueObject in Namespace Sharparch.Domain.DomainModel. Dieses Objekt erbt von BaseObject und überschreibt die== und!= Operatoren und die Equal () und GetHashCode () -Methoden. Die Methode-Überschreibungen nennt nur die BaseObject-Versionen dieser beiden Methoden, die wiederum GetttypespecificSignatureProperties () -Methode verwenden, um die Eigenschaften in den Gleichstellungsvergleich zu erhalten.

untere Zeile ist, dass die Gleichheit der Entität von

bestimmt wird

    .
  1. Referenz Gleichheit
  2. derselbe Typ?
  3. id's sind das gleiche
  4. Vergleich aller mit dem [Domainsignatur] -attribut dekorierten Eigenschaften
  5. für ValueObjects, das gleiche Methode von BaseObject wird verwendet

      .
    1. Referenz Gleichheit
    2. derselbe Typ?
    3. Vergleichen Sie alle öffentlichen Eigenschaften
    4. Dies ist ein bisschen vereinfacht, ich schlage vor, Sie erhalten den neuesten Code von GitHub und lesen Sie den Code in den genannten 3 Klassen selbst durch.

      edit: bezüglich der persistenz, dies also frage < / a> könnte helfen. Anders als das beziehen sich auf die offizielle NH- und FLUENT-NH-Dokumentation

Andere Tipps

Werteobjekte sind einfache Objekte, die keine Basisklasse benötigen.(Die einzigen Grundlagen haben Basisklassen, um Gleichheit basierend auf der Identität bereitzustellen).Implementieren eines Wertobjekts bedeutet einfach, eine Klasse zu erstellen, um einen Wert aus Ihrer Domäne darzustellen.Viele Zeiten von Wertobjekten sollten unveränderlich sein und Gleichheitsvergleichsmethoden bereitstellen, um die Gleichstellung an andere Wertobjekte desselben Typs zu bestimmen.Werfen Sie einen Blick hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top