将Automapper配置为映射集合属性的内容,但使用目标集合对象

本文关键字:集合 对象 目标集 目标 配置 Automapper 映射 属性 | 更新日期: 2023-09-27 18:00:44

我有一个类

class A
{
  public A()
  {
    CollectionProp = new List<B>();
  }
  public ICollection<B> CollectionProp {get; private set;}
}

假设我想从A->A映射,作为一种克隆机制,但我不希望AutoMapper尝试创建CollectionProp,它应该只使用目标对象中存在的CollectionProp(由构造函数创建),而是将A中的所有"B"对象克隆到A的新实例中。

我该怎么做。。到目前为止,我有:

Mapper.CreateMap<A, A>()
            .ForMember(dest => dest.CollectionProp, opt => opt.MapFrom(e => e.CollectionProp));

它似乎使用了新创建的对象中的CollectionProp,但没有填充其元素。

我错过了什么?

感谢

将Automapper配置为映射集合属性的内容,但使用目标集合对象

这个对我有效

            Mapper.CreateMap<A, A>()
            .ConvertUsing((s) => {
                var d = new A(); 
                d.CollectionProp.AddRange(s.CollectionProp); 
                return d;
            });

好的。这个实际上克隆了Bs

            Mapper.CreateMap<B,B>();
            Mapper.CreateMap<A, A>()
            .ConvertUsing(s => {
                var d = new A();
                s.CollectionProp.ToList()
                    .ForEach(b => d.CollectionProp.Add(Mapper.Map<B,B>(b)));
                return d;
            });