これらのクラスがあります:
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 ;}
}
私はこれを定義しました:
Mapper.CreateMap<Person, PersonView>();
Mapper.CreateMap<PersonView, Person>()
.ForMember(person => person.Id, opt => opt.Ignore());
これでうまくいきます:
PersonView personView = Mapper.Map<Person, PersonView>(new Person());
同じようにしたいのですが、List<Person> to List<PersonView>
しかし、正しい構文が見つかりません。
ありがとう
マップを作成したら(既に完了しているため、リストで繰り返す必要はありません)、次のように簡単です。
List<PersonView> personViews =
Mapper.Map<List<Person>, List<PersonView>>(people);
詳細については、 リストと配列のAutoMapperドキュメント を参照してください。
AutoMapper 6 <の場合:
スタートアップで:
Mapper.Initialize(cfg => {
cfg.CreateMap<Person, PersonView>();
...
});
次に、次のように使用します。
List<PersonView> personViews = Mapper.Map<List<PersonView>>(people);
次のように試すこともできます:
var personViews = personsList.Select(x=>x.ToModel<PersonView>());
どこで
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);
}