Destのプロパティのマッピングを作成します。
Mapper.CreateMap<Source, Dest>()
.ForMember(d => d.Item1, o => o.MapFrom(s => s.ItemArray[0]))
.ForMember(d => d.Item2, o => o.MapFrom(s => s.ItemArray[1]))
.ForMember(d => d.Item3, o => o.MapFrom(s => s.ItemArray[2]))
.ForMember(d => d.Item4, o => o.MapFrom(s => s.ItemArray[3]));
使用法:
Source source = new Source() { ItemArray = new int[] { 1, 2, 3, 4 } };
Dest dest = Mapper.Map<Source, Dest>(source);
更新:いいえ、簡単な方法はありません。AutoMapperは、プロパティFooをソースプロパティBarのインデックスNの要素にマップする必要があることをどのように理解しますか?このすべての情報を提供する必要があります。
更新:Automapperから
Projectionは、オブジェクトモデルをフラット化するだけでなく、ソースを宛先に変換します。追加の構成がない場合、AutoMapperは、ソースタイプの命名構造と一致するようにフラット化された宛先を必要とします。ソース構造と完全に一致しない宛先にソース値を投影する場合は、カスタムメンバーマッピング定義を指定する必要があります。
あ、はい。命名構造が一致しない場合は、メンバーのカスタムマッピングを指定する必要があります。
更新:実際には、すべての変換を手動で行うことができます(ただし、名前でマップできる他のプロパティがある場合は特に、これがはるかに良い方法ではないと思います):
Mapper.CreateMap<Source, Dest>().ConstructUsing((s) => new Dest()
{
Item1 = s.ItemArray[0],
Item2 = s.ItemArray[1],
Item3 = s.ItemArray[2],
Item4 = s.ItemArray[3]
}