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.

Cómo mapear propiedades de un objeto a una lista.

Quiero mapear los valores de las propiedades de una clase a una lista.


public class categoria
{
public int? categoryACount { get; set; } // 1
public int? categoryBCount { get; set; } // 2
public int? categoryCCount { get; set; } // 3
public int? categoryDCount { get; set; } // 4
}


public class listaCategorias
{
public string tipoCategoria { get; set; } //categoryA,categoryB,categoryC,categoryD
public string codigoCategoria { get; set; } //A,B,C,D
public string descripcionCategoria { get; set; } //ADesc,BDesc,CDesk.DDesc
public string cantidadCategoria { get; set; } //1,2,3,4
}

Aquí la estructura de las clases es diferente y se basa en el tipoCategoria. Quiero mapearlo a la clase Categoria. El valor de cantidadCategoria para cada tipoCategoria debe ser asignado a las propiedades de la clase Categoria.

Si tipoCategoria es “CategoryA”, el valor de cantidadCategoria debe ser asignado a categoryACount de la clase categoria.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mapear los valores de las propiedades de la clase category a la clase categoryList, se puede utilizar la biblioteca AutoMapper en C#. Aquí se explica cómo hacerlo:

    1. Primero, instale el paquete AutoMapper desde la Consola del Administrador de Paquetes de NuGet ejecutando el siguiente comando:
    Install-Package AutoMapper
    
    1. A continuación, defina las clases Category y CategoryList:
    public class Category
    {
        public int? CategoryACount { get; set; }
        public int? CategoryBCount { get; set; }
        public int? CategoryCCount { get; set; }
        public int? CategoryDCount { get; set; }
    }
    
    public class CategoryList
    {
        public string CategoryType { get; set; }
        public string CategoryCode { get; set; }
        public string CategoryDescription { get; set; }
        public int CategoryQuantity { get; set; }
    }
    

    Tenga en cuenta que se ha cambiado el tipo de propiedad CategoryQuantity de cadena a entero ya que debe hacer una asignación de tipos int? con las propiedades de Category.

    1. Después de definir las clases, cree una instancia de la clase MapperConfiguration y defina el mapeo entre las clases.
    var config = new MapperConfiguration(cfg =>
    {
        cfg.CreateMap<categorylist, category="">()
            .ForMember(dest => dest.CategoryACount, opt => opt.MapFrom(src => src.CategoryQuantity));
    });
    

    Aquí estamos indicando a AutoMapper que cree un mapa que asocie la propiedad CategoryQuantity de la clase CategoryList con la propiedad CategoryACount de la clase Category.

    1. Una vez que se haya configurado el mapa, cree una instancia de IMapper y úsela para mapear los valores de la clase CategoryList a la clase Category.
    var mapper = config.CreateMapper();
    
    var categoryList = new CategoryList
    {
        CategoryType = "CategoryA",
        CategoryCode = "A",
        CategoryDescription = "ADesc",
        CategoryQuantity = 10
    };
    
    var category = mapper.Map<category>(categoryList);
    

    Aquí, mapper.Map<category>(categoryList) asignará los valores de las propiedades del objeto categoryList a las propiedades correspondientes del objeto Category.

    Después de ejecutar dicho código, el objeto category tendrá el valor 10 asignado a la propiedad CategoryACount, ya que el valor de la propiedad CategoryQuantity de categoryList se asigna a esta propiedad.</categorylist,>

Comments are closed.