I wanna map from flatten object to nested object by using AutoMapper like below source.
How can we do this?
the content of Classes It is preferable to use Class or Property attributes for AutoMapper.
public class Src
{
public string Value0 { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
}
[AutoMap(typeof(Src))]
public class Dest
{
public string Value0 { get; set; }
public NestedDestChild Child { get; set; }
}
[AutoMap(typeof(Src))]
public class NestedDestChild
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
mapping process (I cut precise process of instantiation of Mapper)
public void ExecuteMapping()
{
Src srcObj = new Src
{
Value0 = "aaa",
Value1 = "bbb",
Value2 = "ccc"
};
Mapper mapper = new Mapper();
Dest destObj = mapper.Map<Dest>(srcObj);
Console.WriteLine(destObj.Value0); // expected -> aaa
Console.WriteLine(destObj.Child.Value1); // expected -> bbb
Console.WriteLine(destObj.Child.Value2); // expected -> ccc
}
I know below source would be compatible, but it is redundancy.
I would like to map only one time from Src to Dest.
So, I wanna execute like above source.
public void ExecuteMapping()
{
Src srcObj = new Src
{
Value0 = "aaa",
Value1 = "bbb",
Value2 = "ccc"
};
Mapper mapper = new Mapper();
Dest destObj = mapper.Map<Dest>(srcObj);
// ↓I wanna cut this line
NestedDestChild destObj.Child = mapper.Map<NestedDestChild>(srcObj);
Console.WriteLine(destObj.Value0); // expected -> aaa
Console.WriteLine(destObj.Child.Value1); // expected -> bbb
Console.WriteLine(destObj.Child.Value2); // expected -> ccc
}
ForMember(dest => dest.Child, options => options.MapFrom(source => source))