我有一个班级
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,但它没有填充其元素。
我错过了什么?
由于
答案 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;
});