2016-05-30 7 views
0
//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:AutomapperがたIUserパラメータでコンストラクタを使用して部品モデルをインスタンス化するように複数のコンストラクタ

//carViewModel holds multiple parts 
var car = this.mapper.Map<Car>(carViewModel); 

を車には、複数の部品モデルを保持しています。しかし、それらはすべて同じ性質を持っています。コンストラクタが一度呼び出され、オブジェクトが再利用されているように見えます。私はDIコンテナとして構造体マップを使用しています。パーツオブジェクトを再利用しない簡単な方法はありますか?

答えて

0

2番目のクラスのコンストラクタパラメータにマップする最初のクラスのパラメータとしてIUserを使用している場合は、使用できます。

Mapper.Initialize(cfg => cfg.CreateMap<FromT, ToT>() 
    .ForCtorParam("CtorParamName", opt => opt.MapFrom(src => src.MyIUser)) 
); 
関連する問題