ConfigureAutomapper用于映射collection-property的内容,但使用目标集合对象

时间:2011-06-30 22:33:52

标签: c# automapper

我有一个班级

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

让我们说我要映射A - &gt; A,作为克隆机制,但我不希望AutoMapper尝试创建CollectionProp,它应该只使用目标对象中存在的CollectionProp(由构造函数创建),但是将所有'B'对象从A克隆到A的新实例。

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

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

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

我错过了什么?

由于

1 个答案:

答案 0 :(得分:0)

这个对我有用

            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;
            });