Automapper define una variable personalizada utilizada para determinar los valores de varias propiedades en el destino.
Estoy utilizando AutoMapper para mapear algunos DTOs a Modelos de UI. Sin embargo, uno de mis DTOs contiene un campo con datos serializados (los datos serializados representan otro objeto con propiedades) que se utiliza para determinar los valores de varias propiedades del modelo.
Por ejemplo:
public class SourceDTO
{
public int Id {get; set;}
public int Name {get; set;}
public string SerializedDetails {get; set;}
}
public class DestinationModel
{
public int Id {get; set;}
public int Name {get; set;}
public string Address {get; set;}
public string AccountNr {get; set;}
}
En este caso, al mapear la fuente al destino, me gustaría poder deserializar el campo SerializedDetails primero y luego usarlo para mapear Address y AccountNr con propiedades de ese objeto, en lugar de deserializarlo dos veces, para cada propiedad. ¿Se puede hacer esto con AutoMapper?
davy.ai
Sí, esto se puede hacer con AutoMapper. AutoMapper proporciona una función llamada “Value Resolvers” que te permite personalizar cómo se asigna un valor desde la fuente al destino.
En este caso, podemos crear un value resolver personalizado que deserialice el campo
SerializedDetails
y asigne las propiedades deseadas al modelo de destino.Aquí tienes un ejemplo:
Luego, en nuestra configuración de mapeo, podemos especificar que se utilice este value resolver personalizado para el campo
SerializedDetails
:Ahora, cuando mapeemos desde el DTO de origen al modelo de destino, AutoMapper usará nuestro value resolver personalizado para deserializar el campo
SerializedDetails
y asignar las propiedades deseadas al modelo de destino.</sourcedto,></sourcedto,>