Mapeamento por achatamento (Flattening)

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Conceito

Por padrão, o AutoMapper não apenas mapeia propriedades com o mesmo nome, mas também segue regras de achatamento (Flattening):

Se o objeto de origem (Person) não tiver uma propriedade correspondente no destino (People), o AutoMapper fará automaticamente o seguinte:

  1. Dividir propriedades de objetos aninhados: Cn.Name → propriedade destino CnName
  2. Corresponder métodos sem parâmetros que começam com Get: GetTotal() → propriedade destino Total

Código completo

using AutoMapper;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Inicializar a configuração do AutoMapper
            Mapper.Initialize(x =>
            {
                x.CreateMap();
            });

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

            People peo = new People();

            // Executar o mapeamento
            Mapper.Map(p, peo);

            Console.WriteLine(peo.CnName);  // Saída: Jack Chan  [Achatamento: Cn.Name → CnName]
            Console.WriteLine(peo.Total);   // Saída: 100        [Achatamento: GetTotal() → Total]

            Console.ReadKey();
        }
    }

    // Classe de origem
    class Person
    {
        public int Age { get; set; }
        // Objeto aninhado
        public Chinese Cn { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }

        // Método sem parâmetros começando com Get, mapeado automaticamente para a propriedade Total
        public decimal GetTotal()
        {
            return 100M;
        }
    }

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

    // Classe de destino
    class People
    {
        public int Age { get; set; }
        // Resultado do achatamento: concatena o objeto aninhado Cn e Name em CnName
        public string CnName { get; set; }
        public decimal Salary { get; set; }
        public bool Sex { get; set; }
        public DateTime Birthday { get; set; }
        // Resultado do achatamento: corresponde ao método GetTotal() da origem
        public decimal Total { get; set; }
    }
}

Resumo

  1. Concatenação automática de propriedades de objetos aninhados
    Origem: Person.Cn.Name
    Propriedade destino: CnName
    O AutoMapper concatena automaticamente o objeto aninhado Cn e Name, atribuindo o resultado a CnName. Não é necessário configurar ForMember manualmente.
  2. Correspondência de métodos sem parâmetros que começam com Get
    Método de origem: public decimal GetTotal()
    Propriedade destino: public decimal Total
    O prefixo Get é removido e o valor de retorno do método é atribuído automaticamente a Total.

Nota: O método deve ser sem parâmetros para que esta regra de achatamento seja acionada.

Saída

Jack Chan
100

Mapeamento por achatamento (Flattening)

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *