//Mapping:
this.CreateMap<PartModel, Part>().ConstructUsingServiceLocator();
//Model
[Table("Car")]
public class Car
{
public Car(IUser user)
{
}
public Car()
{
}
public IList<Part> Parts { get; set; }
}
[Table("Part")]
public class Part
{
public Part(IUser user)
{
}
public Part()
{
}
}
public class CarsViewModel
{
public IList<PartViewModel> Parts{ get; set; }
}
我正在使用ConstructorUsingServiceLocator(),以便Automapper使用带有IUser参数的构造函数实例化Part模型。 当我执行以下映射时:
//carViewModel holds multiple parts
var car = this.mapper.Map<Car>(carViewModel);
汽车拥有多个零件模型。但是它们都具有相同的属性。看起来构造函数只被调用一次并且正在重用该对象。我使用结构图作为我的DI容器。有没有一种简单的方法可以不重用零件对象?
答案 0 :(得分:0)
如果您将IUser作为要映射到第二个类构造函数参数的第一个类的参数,则可以使用。
Mapper.Initialize(cfg => cfg.CreateMap<FromT, ToT>()
.ForCtorParam("CtorParamName", opt => opt.MapFrom(src => src.MyIUser))
);