Skip to content

TBertuzzi/AutoMapperXamarinFormsExemplo

Repository files navigation

AutoMapperXamarinFormsExemplo

Exemplo de como utilizar AutoMapper com XamarinForms

Smiley face

Vamos ao Nuget Instalar o AutoMapper em todos os projetos.

Em seguida existem algumas coisas q precisamos fazer. Antes de tudo para utilizar o AutoMapper precisamos configurar o arquivo do Linker em nossos projetos para que ele não remova algumas referencias importantes do AutoMapper :

Basta criar o arquivo Linker.xml nos projetos Android e iOS com o conteudo :

<linker>
  <assembly fullname="mscorlib">
    <type fullname="System.Convert" preserve="All" />
  </assembly>
</linker>

Agora no projeto iOS devemos editar o csproj e adicionar a seguinte referencia :

  <PackageReference Include="System.Reflection.Emit" Version="4.7.0">
      <ExcludeAssets>all</ExcludeAssets>
      <IncludeAssets>none</IncludeAssets>
  </PackageReference>

Pronto! Agora vamos criar uma classe para configurar o AutoMapper :

   public static class AppBootstrapper
    {
        public static IMapper CreateMapper()
        {
            var mapperConfiguration = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap<Pokemon, PokemonViewModel>()
                .ForMember(vm => vm.ObterProximoPokemonCommand, opt => opt.Ignore());

                cfg.CreateMap<PokemonViewModel, Pokemon>();
            });

            return mapperConfiguration.CreateMapper();
        }
    }

Notem que na configuração eu especifico qual Model sera mapeada para ViewModel e vice e versa. Tambem estou ignorando o Command na viewModel, para que não exista problema no mapeamento.

Agora em Nossa ViewModel basta chamar o AutoMapper, para isso implementei um serviço que obtem um Pokemon e o AutoMapper ira mapear o resultado em nossa ViewModel :

 IMapper _mapper;
 
    public PokemonViewModel()
        {
            Titulo = "AutoMapper Exemplo";
            _ApiService = new PokemonService();

            _mapper = AppBootstrapper.CreateMapper();

            ObterProximoPokemonCommand = new Command(ExecuteObterProximoPokemonCommand);
        }
        
         private async Task CarregarPokemon(int id)
        {
            try
            {
                Ocupado = true;

                var pokemon = await _ApiService.GetPokemon(_cont);
                _mapper.Map(pokemon, this);


            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            finally
            {

                Ocupado = false;
            }
        }

Ao Executar temos o conteudo exibido na Tela.

Recomendo ler a documentação do AutoMapper para ver tudo que é possivel fazer com ele. E tambem o Mark (Mark Allibone) escreveu um artigo bem legal sobre isso, e você pode conferir Clicando Aqui

Caso fique a duvida este repositorio tem um exemplo da implementação completa.

Quer ver outros artigos sobre Xamarin ? Clique aqui

Espero ter ajudado!

Aquele abraço!

About

Exemplo de AutoMapper com XamarinForms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages