【发布时间】:2010-12-27 10:44:39
【问题描述】:
当我使用 List 属性映射对象时,Automapper 默认将目标对象上的列表属性设置为来自源对象的实例。
automapper 有没有办法创建新列表并复制项目但不复制列表实例?
我希望通过以下测试:
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