2013-06-04 12 views
5

Ho una classe figlio nidificata con proprietà pubbliche con setter privati. Nella classe genitore sono in grado di usare Automapper per mappare la classe figlio e vengono impostati i valori dei setter privati. Tutto ciò che ho letto indica che Automapper non supporta questo e richiede un costruttore personalizzato nella classe figlio per popolare i setter privati.Automapper dovrebbe funzionare con i setter privati ​​OOB?

La versione corrente utilizza la riflessione o qualcosa per mappare i setter privati? I setter sono decisamente privati ​​perché nella classe genitore non sono in grado di impostare Child.Property ma nello stesso punto Mapper.Map è in grado di impostare la proprietà.

+1

possibile duplicato di: http://stackoverflow.com/questions/8355024/automapper-mapping-properties-with-private-setters – haim770

+1

Duplicato di http://stackoverflow.com/questions/8355024/automapper-mapping-properties -con-private-setter. –

+0

Leggi correttamente la mia domanda. La domanda che hai collegato afferma che NON funziona con i setter privati ​​e utilizza i parametri del costruttore come soluzione alternativa, ma nel mio caso sono in grado di mappare direttamente i setter privati. – Monstieur

risposta

4

Automapper utilizza la riflessione ampiamente e non c'è motivo per non utilizzarlo per impostare i setter privati.

In realtà, fino alla tua domanda non sapevo che funzionasse.

Se esaminiamo i test unitari, possiamo scoprire che i setter privati ​​sono impostati automaticamente. Si prega di vedere PrivateSetterInParentWorks.

Nota, Silverlight doesn't support setting private fields through reflection. Quindi, la funzione non funziona con esso.

+0

È POSSIBILE utilizzare l'operatore privato? – Kaerber

+0

@Kaerber, osserva il metodo [IgnoreAllPropertiesWithAnInaccessibleSetter] (https://github.com/AutoMapper/AutoMapper/pull/423). Appare in 3.2.0. –