1

.NET 4.5 と Automapper 3.0 を使用しています

プロパティとして Child オブジェクトの配列を持つソース オブジェクトがあります。

public class Source
{
    public string Name { get; set; }
    public Child[] Values { get; set; }
}

public class Child
{
    public string Val1 { get; set; }
    public string Val2 { get; set; }
}

私の目的地は平らです

public class Dest
{
    public string Name { get; set; }
    public string Val1 { get; set; }
    public string Val2 { get; set; }
}

私がする必要があるのは、Source の 1 つのインスタンスを Dest のコレクションにマップすることです (IList、Dest[]、コレクションの種類は関係ありません)。

つまり、Source の 1 つのインスタンスに対して、

Name = "MySource"
Dest = [Val1 = "A", Val2 = "B"]
       [Val1 = "C", Val2 = "D"]

Dest の 2 アイテム コレクションを返す必要があります

Dest[0]: {Name="MySource", Val1="A", Val2="B"}
Dest[1]: {Name="MySource", Val1="C", Val2="D"}

これはオートマッパーで行うことができますか?

私は次のことを試しましたが、どれも機能しません(明らかに):

Mapper.CreateMap<Source,Dest>();
var items = Mapper.Map<Source,Dest>();

Mapper.CreateMap<Source,Dest[]>();
var items = Mapper.Map<Source,Dest[]>();

Mapper.Createmap<Source,Dest>();
var items = Mapper.map<Source,Dest[]>();
4

1 に答える 1

2

を使用しConstructUsingます。

Mapper.CreateMap<Source, Dest[]>()
    .ConstructUsing(s => s.Values.Select(c => new Dest 
        { 
            Name = s.Name,
            Val1 = c.Val1,
            Val2 = c.Val2
        }).ToList());
于 2013-10-16T21:57:09.577 に答える