實(shí)際開發(fā)中, 必然不會(huì)只有簡(jiǎn)單的類之間轉(zhuǎn)換, 也會(huì)設(shè)計(jì)到一個(gè)類當(dāng)中嵌套了其它類, 甚至嵌套了很多層. 它們的轉(zhuǎn)換也很簡(jiǎn)單.
代碼如下, 準(zhǔn)備了2個(gè)類
public class Demo6
{
public int Value { get; set; }
public Demo6InnerClass Inner { get; set; }
}
public class Demo6InnerClass // 嵌套的類
{
public int InnerValue { get; set; }
}
public class Demo6Dto
{
public int Value { get; set; }
public Demo6InnerClassDto Inner { get; set; }
}
public class Demo6InnerClassDto // 嵌套的類
{
public int InnerValue { get; set; }
}
mapper配置如下, 嵌套的類也做一個(gè)映射即可
public class Demo6Profile : Profile
{
public Demo6Profile()
{
CreateMap<Model.Demo6, ModelDto.Demo6Dto>();
CreateMap<Model.Demo6InnerClass, ModelDto.Demo6InnerClassDto>();
}
}
最后看下測(cè)試代碼看下執(zhí)行的效果
private static IMapper _mapper;
static void Main(string[] args)
{
var configuration = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MyProfile.Demo6Profile>();
});
_mapper = configuration.CreateMapper();
demo6();
}
public static void demo6()
{
var result = _mapper.Map<ModelDto.Demo6Dto>(new Model.Demo6()
{
Value = 1, Inner = new Model.Demo6InnerClass() { InnerValue=1 }
});
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(result));
Console.ReadKey();
}
結(jié)果如圖, 無論是value, 還是嵌套的innerValue都被映射成功, 賦值成1.image.png