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.

Mapeo manual con herencia.

Supongamos que tengo dos clases A y ADto.
A hereda de ABase y ADto hereda de ADtoBase.

Tengo dos métodos de extensión para mapear manualmente ABase a ADtoBase y viceversa.
Cuando quiero escribir un método de extensión para mapear A a ADto, ¿hay alguna forma de reutilizar la conversión base para evitar duplicaciones? Es decir, no quiero escribir el mapeo para los campos que existen en la clase base y de alguna manera reutilizar el mapeador base para eso.

Ejemplo:

Clase ABase:
+ string Id;

Clase ADtoBase:
+ string Id;

Clase A: ABase:
+ string Name;

Clase ADto:ADtoBase
+ string Name

public static ADto ToADto(this ADtoBase)
{
// De alguna manera quiero usar el mapeador base (extensión) para no tener que mapear Id nuevamente y solo mapear Name.
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible reutilizar la conversión base para evitar la duplicación. Puede modificar el método de extensión existente para mapear ABase a ADtoBase e incluir el mapeo de los campos comunes, como Id, y luego llamar a ese método al mapear A a ADto. Aquí tienes un ejemplo de cómo hacerlo:

    public static ADtoBase ToADtoBase(this ABase a)
    {
        // mapear los campos de ABase a ADtoBase
        ADtoBase adtoBase = new ADtoBase();
        adtoBase.Id = a.Id;
        return adtoBase;
    }
    
    public static ADto ToADto(this A a)
    {
        // utilizar el mapeador base para mapear ABase a ADtoBase
        ADtoBase adtoBase = a.ToADtoBase();
    
        // mapear los campos de A a ADto
        ADto adto = new ADto();
        adto.Name = a.Name;
        adto.Id = adtoBase.Id;
        return adto;
    }
    

    En este ejemplo, el método ToADtoBase mapea los campos de ABase a ADtoBase, incluido el campo Id. El método ToADto luego llama al método ToADtoBase para reutilizar ese mapeo y solo mapea el campo Name de A a ADto.

Comments are closed.