2010-02-03 5 views
8

Ist es möglich, AutoMapper mit unveränderlichen Typen zu verwenden?Automapper und immutability

Zum Beispiel ist mein Domain-Typ unveränderlich und ich möchte meinen View-Typ diesem zuordnen.

Ich glaube es ist nicht aber wollen nur dies bestätigt.

Auch die Best Practice, um Ihre Domänentypen unveränderbar zu machen, ist die beste Vorgehensweise beim Zuordnen Ihrer Ansichtstypen zu Domänentypen?

+0

Domain-Typen unveränderlich? Ich glaube nicht, das wäre eine korrekte Aussage – David

+2

@ David Warum nicht? –

Antwort

8

Normalerweise mache ich die Zuordnung von Ansichtstypen zu Domäne Typen von Hand, wie ich in der Regel durch eine komplexere Schnittstelle, Methoden und so weiter arbeiten werde. Wenn Sie AutoMapper verwenden, um von der Ansicht zur Domäne zu wechseln, sind Sie jetzt in einem anämischen Domänenmodell eingeschlossen, unabhängig davon, ob Sie sich absichtlich dafür entschieden haben oder nicht.

+0

Warum sollten Sie sagen, dass das Domänenmodell anämisch ist, wenn Sie den Automapper für die Zuordnung von der Ansicht zur Domäne verwenden? Sie müssen Ihr Domänenmodell irgendwie mit den Daten aus der Ansicht füllen. Liegt es daran, dass Sie die Domäne stattdessen über Ctors/Methoden erstellen/auffüllen? –

+1

Ja, genau. Schau dir meine Serie zur Stärkung deiner Domain an: http://www.losetechies.com/blogs/jimmy_bogard/archive/2010/02/03/strengthening-your-domain-a-primer.aspx Wenn du dir andere anschaust MVC-Frameworks, wie Rails, das Konzept eines Modells ist ein hartnäckiges Modell, so dass Sie AutoMapper nicht benötigen. –

+0

Ich denke, Ihre Artikel haben mich beeinflusst, ich habe oft Autoapper verwendet, um Domain-Objekte zu dto/vm zu mappen, aber immer am Ende nach oben zu sehen, wie Autoadapter das etwas andere machen, die einfach die Eigenschaften einander zuordnen. Handelt es sich nicht, ist es einfacher zu lesen und zu debuggen. Wie strukturierst du den Code - d. H. Wo setzt du die Methoden, die die Eigenschaften der Objekte abbilden? – sambomartin

2

AutoMapper verlässt sich auf Eigenschafteneinsteller, um seine Arbeit zu erledigen. Wenn Sie also nur Leseeigenschaften haben, wird AutoMapper nicht viel nutzen.

Sie können das Mapping-Verhalten überschreiben und es beispielsweise so konfigurieren, dass es einen bestimmten Konstruktor aufruft, der jedoch den Zweck von AutoMapper im Grunde vereitelt, weil Sie dann das Mapping manuell durchführen und nur ein schwerfälliges hinzufügen zusätzlicher Schritt in dem Prozess.

Es macht nicht viel Sinn für mich, dass Ihr Domänenmodell unveränderlich ist. Wie aktualisierst du es? Ist die gesamte Anwendung schreibgeschützt? Und wenn ja, warum sollten Sie jemals zu Ihr Domain-Modell im Gegensatz zu von zuordnen? Ein unveränderliches Domänenmodell klingt ... ziemlich nutzlos.

P.S. Ich gehe davon aus, dass Sie this AutoMapper und nicht die auto-mapping feature in Fluent NHibernate oder sogar eine andere ganz andere Sache meinen. Wenn das falsch ist, sollten Sie genauer sein und Tags für Ihre Plattform/Sprache hinzufügen.