2013-06-04 8 views
5

Ich habe eine verschachtelte Kindklasse mit öffentlichen Eigenschaften mit privaten Setter. In der Elternklasse kann ich Automapper verwenden, um der Kindklasse zuzuordnen und die Werte der privaten Setter werden gesetzt. Alles, was ich gelesen habe, weist darauf hin, dass Automapper dies nicht unterstützt und einen benutzerdefinierten Konstruktor in der Kindklasse benötigt, um private Setter zu füllen.Soll Automapper mit privaten Setter OOB arbeiten?

Ist die aktuelle Version mit Reflektion oder etwas, um die privaten Setter zu kartieren? Die Setter sind definitiv privat, weil ich in der Elternklasse Child.Property nicht einstellen kann, aber Mapper.Map ist in der Lage, die Eigenschaft zu setzen.

+1

möglich duplizieren von: http://stackoverflow.com/questions/8355024/automapper-mapping-properties-with-private-setters – haim770

+1

Duplizieren von http://stackoverflow.com/questions/8355024/automapper-mapping-properties -mit-privaten-Setter. –

+0

Lesen Sie meine Frage richtig. Die Frage, die Sie verknüpften, besagt, dass es nicht mit privaten Setter arbeitet und Konstruktorparameter als Workaround verwendet, aber in meinem Fall bin ich in der Lage, private Setter direkt zuzuordnen. – Monstieur

Antwort

4

Automapper verwendet Reflexion weitgehend, und es gibt keinen Grund, es nicht zu verwenden, um private Setter zu setzen.

Eigentlich bis zu Ihrer Frage wusste ich nicht, dass es funktioniert.

Wenn wir Unit-Tests betrachten, können wir feststellen, dass private Setter automatisch gesetzt werden. Bitte sehen Sie PrivateSetterInParentWorks.

Hinweis, Silverlight doesn't support setting private fields through reflection. Also funktioniert das Feature nicht damit.

+0

Können wir privaten Settern VERBOTEN? – Kaerber

+0

@Kaerber, sehen Sie sich die [IgnoreAllPropertiesWithAnInAccessibleSetter] (https://github.com/AutoMapper/AutoMapper/pull/423) Methode an. Es erscheint in 3.2.0. –