Когда я сопоставляю объект со свойством 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.