編集: タイトルが正しくありません。ソース リストからネストされたモデルのソース リストにマップしようとしています。
リストをネストされたモデルにリストされている別のリストにマップしようとすると問題が発生します。一種の非平坦化。問題は、マッピングの方法がわからないことです。
失敗したマッピングの試みに続く私のセットアップは次のとおりです。
public class DestinationModel
{
public DestinationNestedViewModel sestinationNestedViewModel { get; set; }
}
public class DestinationNestedViewModel
{
public List<ItemModel> NestedList { get; set; }
}
public class SourceModel
{
public List<Item> SourceList { get; set; }
}
Item と ItemModel の間に既にマッピングが定義されている場合
このままじゃ無理だ…
Mapper.CreateMap<SourceModel, DestinationModel>()
.ForMember(d => d.DestinationNestedViewModel.NestedList,
opt => opt.MapFrom(src => src.SourceList))
エラー:
式 'd => d.DestinationNestedViewModel.NestedList' は最上位メンバーに解決される必要があります。パラメーター名: lambdaExpression
次に、次のようなことを試しました。
.ForMember(d => d.DestinationNestedViewModel,
o => o.MapFrom(t => new DestinationNestedViewModel { NestedList = t.SourceList }))
問題は NestedList = t.SourceListです。これらには、それぞれItemModelとItemという異なる要素が含まれています。したがって、それらをマッピングする必要があります。
これをどのようにマッピングしますか?