Automapper - 更新现有实例

4

我有以下这些类:

public class SourceA 
{
  public double SourceAProp { get; set; }
}

public class SourceB
{
  public double SourceBProp { get; set; }
}

public class Dest
{
  public double SourceAProp { get; set; }
  public double SourceBProp { get; set; }
} 

我曾尝试过:

var config = new MapperConfiguration(cfg => cfg.CreateMap<SourceA, Dest>());
var mapper = config.CreateMapper();            
var dest = mapper.Map<SourceA, Dest>(sourceA.Value);

config = new MapperConfiguration(cfg => cfg.CreateMap<SourceB, Dest>());
mapper = config.CreateMapper();            
dest = mapper.Map<SourceB, Dest>(sourceB.Value);

但是我认为每次执行Map都会创建一个实例。

我该如何使用AutoMapper创建一个单一的Dest实例,并将SourceASourceB实例的值合并到这个实例中(或在第一次执行后更新创建的实例)?

1个回答

7
Map<...>() 方法有一个重载,你可以提供目标对象。因此,它基本上是这样的:
Dest dest = new Dest();
mapper.Map<SourceA, Dest>(sourceA.Value, dest);
//...
mapper.Map<SourceB, Dest>(sourceB.Value, dest);

请注意,只有在指定<TSource, TDest>时才存在此重载 - 如果只指定Map<TDest>(...),则不存在该重载。请参考源代码 - qJake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接