AutoMapper-mapping-Eigenschaften mit privaten setter
Ist es möglich, die Zuweisung von Eigenschaften mit dem private setter mit AutoMapper?
- Welche version von Automapper verwenden Sie? Haben Sie versucht, es zu tun?
- eigentlich ist es eine sehr wichtige Frage, unveränderliche Objekte sind eine viel bessere architektonische Praxis, als Objekte, die auf Wunsch verändert werden kann (indem Sie deren setter öffentlich). Dies ist der genaue Grund, Entity Framework kürzlich die Möglichkeit Hinzugefügt, um das Hydrat in private Eigenschaften, um das domänenmodell zu bleiben unveränderlich nach der anfänglichen Hydratation. Vielleicht ist es nicht leozilla muss zur Auffrischung Ihrer Architektur. 😉
- Entschuldigen Sie mich? Private Eigenschaften werden sollen private. Die Daten, die zu dem Objekt gehört, und nur das Objekt weiß und wissen sollte, dass die Daten.
- Der OP spricht nicht über private Eigenschaften, er spricht über public/protected-Eigenschaften mit privaten setter (set-accessor). Große Auszeichnung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie den Wert für diese Eigenschaft im Konstruktor wie diese
dann können Sie ConstructUsing wie diese
das funktioniert mit diesem code
AutoMapper ermöglicht jetzt (ich bin nicht sicher, seit Wann) anzeigen-Eigenschaften mit dem private setter. Es ist mit Reflexion für die Erstellung von Objekten.
Beispiel-Klassen:
And mapping:
AutoMapper Karte Eigentum mit privatem setter mit kein problem. Wenn Sie erzwingen möchten, dass die Kapselung, die Sie verwenden müssen IgnoreAllPropertiesWithAnInaccessiblesetter. Mit dieser option werden alle privaten Eigenschaften (und anderen nicht zugänglichen) werden ignoriert.
Das problem entstehen wird, wenn Sie die Silverlight verwenden. Laut MSDN: https://msdn.microsoft.com/en-us/library/stfy7tfc(v=VS.95).aspx
private set
entfernt werden kann. Aber wenn ich das mache, AutoMapper nicht mehr in der Lage zum anzeigen der Eigenschaft. Es gibt nicht ein Fehler, es bleibt nur das private Eigentum auf Initialwert gesetzt!Sehen #600 Private/interne Ziel-Eigenschaften.
Lösung: