次の 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呼び出していました。MapFromEntityMappedViewModel
MapFromEntityAutoMapper で使用されていないという理由だけでオーバーライドする機会を失いましたMapFromEntityList。これを実現するには、明示的なループにオーバーライドする必要もあります。
アプリの起動時に、次のようなマッピング構成を使用します。
Mapper.CreateMap<ClientCourse, ClientCourseIndexItem>();
AutoMapper にMapFromEntity、たとえば everyを常に呼び出すように指示するにはどうすればよいClientCourseIndexIteですか? または、これをすべて行うためのより良い方法はありますか?
ところで、MapFromEntityインデックス モデルではなく、編集モデルで明示的な呼び出しを使用することがよくあります。