具有默认值的自动映射列表

fri*_*ley 5 c# automapper

我的问题可以简化为以下几组实体:

我有一个实体说:MyEntity它有一个列表EntityTiming(名为Timings)

public class Entity{

  public List<EntityTiming> Timings {get;set;}

}
Run Code Online (Sandbox Code Playgroud)

它对应于一个ViewModel:MyEntityViewModel它有一个列表TimingViewModel(名为Timings).

public class EntityViewModel
{
   public IList<TimingViewModel> Timings {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我为映射方向配置了以下规则: entity -> viewModel

Mapper.CreateMap<Entity,EntityViewModel>

Mapper.CreateMap<EntityTiming,TimingViewModel>
Run Code Online (Sandbox Code Playgroud)

EntityViewModel.Timings 必须有7个项目.但是Enitity.Timings可能少于7项/从不多.

我的问题是:如果列表中的项为空,有没有办法提供默认值 AutoMapper

Ste*_*tty 11

你可以使用AfterMap():

Mapper.CreateMap<Entity, EntityViewModel>()
      .AfterMap((src, dest) => { 
          if (dest.Timings == null) {
              // Populate default values
          }
          else if (dest.Timings.Count < 7) {
              // Populate the rest of the values
          }
       });
Run Code Online (Sandbox Code Playgroud)