J'ai ces cours:
public class Person {
public int Id{ get; set ;}
public string FirstName{ get; set ;}
public string LastName{ get; set ;}
}
public class PersonView {
public int Id{ get; set ;}
public string FirstName{ get; set ;}
public string LastName{ get; set ;}
}
J'ai défini ceci:
Mapper.CreateMap<Person, PersonView>();
Mapper.CreateMap<PersonView, Person>()
.ForMember(person => person.Id, opt => opt.Ignore());
C'est du travail pour ça:
PersonView personView = Mapper.Map<Person, PersonView>(new Person());
Je voudrais faire la même chose mais pour List<Person> to List<PersonView>
mais je ne trouve pas la bonne syntaxe.
Merci
Une fois que vous avez créé la carte (ce que vous avez déjà fait, vous n'avez pas besoin de répéter pour les listes), c'est aussi simple que:
List<PersonView> personViews =
Mapper.Map<List<Person>, List<PersonView>>(people);
Vous pouvez en savoir plus dans la documentation AutoMapper pour les listes et les tableaux .
Pour AutoMapper 6 <ce serait:
Dans StartUp:
Mapper.Initialize(cfg => {
cfg.CreateMap<Person, PersonView>();
...
});
Ensuite, utilisez-le comme ceci:
List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);
Vous pouvez également essayer comme ceci:
var personViews = personsList.Select(x=>x.ToModel<PersonView>());
où
public static T ToModel<T>(this Person entity)
{
Type typeParameterType = typeof(T);
if(typeParameterType == typeof(PersonView))
{
Mapper.CreateMap<Person, PersonView>();
return Mapper.Map<T>(entity);
}
return default(T);
}