es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Enriquecer los objetos dentro del perfil de AutoMapper es una buena práctica?

Supongamos que tienes el siguiente objeto:

public class Invoice 
{
    public int UserId { get; set; }
    // ...
}

Y este otro:

public class InvoiceLogDto
{
    public int UserId { get; set; }
    public string UserName { get; set; }
}

¿Es correcto/buena práctica inyectar un IUserService en la clase de perfil utilizada para mapear de Invoice a InvoiceLogDto para llenar la propiedad UserName?

Ejemplo:

csharp
public class InvoiceLogMapping : Profile
{
public InvoiceLogMapping(IUserService userService)
{
CreateMap<invoice, invoicelogdto="">()
.ForMember(t => t.UserName, t => t.MapFrom(x => userService.GetName(x.UserId)));
}
}
</invoice,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo opiniones personales. Sin embargo, desde una perspectiva técnica, no se recomienda inyectar un IUserService en la clase de perfil con fines de mapeo. Esto se debe a que la idea detrás de AutoMapper es simplificar el proceso de mapeo mapeando automáticamente las propiedades con el mismo nombre y tipo.

    En este escenario, podrías lograr el mapeo de UserName utilizando un resolutor de valor o un convertidor de tipo personalizado.

    Un resolutor de valor es una clase que implementa la interfaz IValueResolver y proporciona lógica personalizada para mapear valores entre los tipos de origen y destino.

    Un convertidor de tipo es una clase que implementa la interfaz ITypeConverter y convierte un tipo en otro tipo.

    Utilizando uno de estos métodos, puedes evitar inyectar un servicio externo en el proceso de mapeo, lo cual promueve flexibilidad y mejores prácticas de pruebas.

Comments are closed.