gpt4 book ai didi

automapper - 使用 AutoMapper 复制列表项

转载 作者:行者123 更新时间:2023-12-02 00:36:07 38 4
gpt4 key购买 nike

当我使用 List 属性映射对象时,默认情况下 Automapper 会将目标对象的 list 属性设置为源对象的实例。

有没有办法让自动映射器创建一个新列表并复制项目但不复制列表实例?

我希望通过以下测试:

var widget = new Widget
{
Tags = new List<string> {"big", "bright"}
};

Mapper.Reset();
Mapper.CreateMap<Widget, Widget>();

var widgetCopy = Mapper.Map<Widget, Widget>(widget);

CollectionAssert.Contains(widgetCopy.Tags, "big");
CollectionAssert.Contains(widgetCopy.Tags, "bright");
Assert.AreNotSame(widget.Tags, widgetCopy.Tags);

小部件类的样子:

class Widget
{
public IList<string> Tags { get; set; }
}

目前最后一个断言失败,因为两个标签属性指向同一个列表实例。当使用 NHibernate 持久化对象时,这是一个问题。

最佳答案

您要求的是深度克隆,某种东西 AutoMapper isn't really designed to do .

还有其他可用的选项。查看是否 ValueInjecter会为你工作。

Deep cloning with ValueInjecter

关于automapper - 使用 AutoMapper 复制列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538149/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com