次の 2 つの基本ビュー モデル クラスがあり、すべてのビュー モデルが (これまで) 派生しています。
public class MappedViewModel<TEntity>: ViewModel
{
public virtual void MapFromEntity(TEntity entity)
{
Mapper.Map(entity, this, typeof (TEntity), GetType());
}
}
public class IndexModel<TIndexItem, TEntity> : ViewModel
where TIndexItem : MappedViewModel<TEntity>, new()
where TEntity : new()
{
public List<TIndexItem> Items { get; set; }
public virtual void MapFromEntityList(IEnumerable<TEntity> entityList)
{
Items = Mapper.Map<IEnumerable<TEntity>, List<TIndexItem>>(entityList);
}
}
上記の のように、AutoMapper がリストをすべて単独で実行できることを知る前は、ループを実行して、すべてのリスト アイテムの新しいインスタンスをMapFromEntityList
呼び出していました。MapFromEntity
MappedViewModel
MapFromEntity
AutoMapper で使用されていないという理由だけでオーバーライドする機会を失いましたMapFromEntityList
。これを実現するには、明示的なループにオーバーライドする必要もあります。
アプリの起動時に、次のようなマッピング構成を使用します。
Mapper.CreateMap<ClientCourse, ClientCourseIndexItem>();
AutoMapper にMapFromEntity
、たとえば everyを常に呼び出すように指示するにはどうすればよいClientCourseIndexIte
ですか? または、これをすべて行うためのより良い方法はありますか?
ところで、MapFromEntity
インデックス モデルではなく、編集モデルで明示的な呼び出しを使用することがよくあります。