我有两节课:
public class Element
{
public Item Item { get; set; }
}
public class Item
{
public Element Element { get; set; }
}
对于此类,我有具有相同结构的 DTO。此方法为映射创建源数据:
static Element[] CreateElements()
{
var element2 = new Element();
return new[]
{
new Element(new Item(element2)),
element2,
new Element()
};
}
然后我配置映射和地图元素:
Mapper.CreateMap<Element, ElementDto>();
Mapper.CreateMap<Item, ItemDto>();
var elements = CreateElements();
var mappedElements = elements
.Select(_ => Mapper.Map(_, typeof(Element), typeof(ElementDto)))
.OfType<ElementDto>()
.ToArray();
在我检查映射结果后:
foreach (var element in mappedElements)
{
Console.WriteLine(mappedElements.Any(e => e?.Item?.Element == element));
}
此代码显示“False”三次。因此,“CreateElements”中的“element2”被创建了两个副本。
对源元素的相同测试将返回“False True False”:
foreach (var element in elements)
{
Console.WriteLine(elements.Any(e => e?.Item?.Element == element));
}
因为我需要配置映射以免重复元素?可能吗?