オブジェクトの (ソース) リストを宛先オブジェクトのプロパティにマップしたい:
class Source
{
public string Name { get; set; }
}
class Destination
{
public List<Source> ThingsWithNames { get; set; }
}
私が見たすべての質問は逆ですが、ここでオブジェクトを「平坦化」したいと思います。
オブジェクトの (ソース) リストを宛先オブジェクトのプロパティにマップしたい:
class Source
{
public string Name { get; set; }
}
class Destination
{
public List<Source> ThingsWithNames { get; set; }
}
私が見たすべての質問は逆ですが、ここでオブジェクトを「平坦化」したいと思います。
私が正しく理解していれば...
何をしているのか
Mapper.Map<Source, Destination>(sourceList);
本当に
Mapper.Map<Source, Destination>(IList<Source> sourceList); // this is an error
これには AutoMapper は必要ありません。代わりに、次のとおりです。
var destination = new Destination();
// or if you have another entity
var destination = Mapper.Map<Destination>(someotherEntity);
destination.ThingsWithNames = sourceList;
あなたsomeotherEntity
がのリストを含むコンポジットである場合、Source
そのマッピングを定義します。
Mapper.CreateMap<SomeotherEntity, Destination>()
.ForMember(d => d.ThingsWithNames, e => e.SourceList))
のNameプロパティのみを気にする場合Source
は、マッピングを定義します
Mapper.CreateMap<Source, string>().ConvertUsing(s => s.Name);
List<string>
コレクションが必要な場合は、自動的に
SomeOtherEntity
List<Source> SourcesList { get; set; }
Destination
List<string> ThingsWithNames { get; set; }
var destination = Mapper.Map<Destination>(someOtherEntity);
// now destination.ThingsWithNames is a List<string> containing your Source names