自动映射器映射到自定义两个对象

时间:2019-01-21 13:44:37

标签: c# automapper

我有一个通用列表,我想将此通用列表映射到另一种通用列表(从BatchModel到Batch)。但是在像这样映射两个对象之前,我已经有了一些条件;

CrudTypes crudTypes(Enum)

List<BatchModel> batchModels;
             var models = batchModels.Select(p => new Batch
                {
                    BatchId = p.BatchId,
                    Id = p.Id,                   
                    CompleteTimeOnServer = crudTypes.Equals(CrudTypes.Insert) ? DateTime.Now : p.CompleteTimeOnServer,                    
                    SyncRetryCount = p.SyncRetryCount
                }).ToList();

如何在自动映射器中进行此映射?

1 个答案:

答案 0 :(得分:0)

有一种方法可以在AutoMapper中使用BeforeMap(请参见http://docs.automapper.org/en/stable/Before-and-after-map-actions.html)。 他们自己的例子:

Mapper.Initialize(cfg => { 
  cfg.CreateMap<Source, Dest>()
    .BeforeMap((src, dest) => src.Value = src.Value + 10)
    .AfterMap((src, dest) => dest.Name = "John");
});

因此您可以照常重写此代码以提取正确的集合(根据您的条件)。