Mapeo por aplanamiento (Flattening)

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Concepto

Por defecto, AutoMapper no solo mapea propiedades con el mismo nombre, sino que también sigue reglas de aplanamiento (Flattening):

Si el objeto de origen (Person) no tiene una propiedad que coincida en el destino (People), AutoMapper realiza automáticamente lo siguiente:

  1. Divide las propiedades de objetos anidados: Cn.Name → propiedad destino CnName
  2. Busca métodos sin parámetros que comiencen con Get: GetTotal() → propiedad destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar la configuración de AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

            // Objeto de origen Person
            Person p = new Person()
            {
                Age = 12,
                Cn = new Chinese() { Name = "Jack Chan" },
                Birthday = DateTime.Now,
                Sex = true,
                Salary = 5000
            };

            People peo = new People();

            // Ejecutar el mapeo
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Salida: Jack Chan  [Aplanamiento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Salida: 100        [Aplanamiento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Clase de origen
    class Person
    {
        public int Age { get; set; }
        // Objeto anidado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sin parámetros que empieza con Get, se mapea automáticamente a la propiedad Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

    public class Chinese
    {
        public string Name { get; set; }
    }

    // Clase de destino
    class People
    {
        public int Age { get; set; }
        // Resultado del aplanamiento: concatena el objeto anidado Cn y Name en CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado del aplanamiento: coincide con el método GetTotal() de origen
        public decimal Total { get; set; }
    }
}

Resumen

  1. Concatenación automática de propiedades de objetos anidados
    Origen: Person.Cn.Name
    Propiedad destino: CnName
    AutoMapper concatena automáticamente el objeto anidado Cn y Name, y asigna el resultado a CnName. No es necesario configurar ForMember manualmente.
  2. Coincidencia de métodos sin parámetros que empiezan con Get
    Método de origen: public decimal GetTotal()
    Propiedad destino: public decimal Total
    Se elimina el prefijo Get y el valor de retorno del método se asigna automáticamente a Total.

Nota: El método debe ser sin parámetros para que se active esta regla de aplanamiento.

Salida

Jack Chan
100

Mapeo por aplanamiento (Flattening)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *