将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,但没有填充其元素。
我错过了什么?
感谢
这个对我有效
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;
});