AutoMapper从子节点获取属性
本文关键字:属性 获取 子节点 AutoMapper | 更新日期: 2023-09-27 18:18:45
我的模型如下:
public class Source
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
public class SourceContainer
{
public Source Source { get; set; }
public string ExtraData { get; set; }
}
public class SourceViewModel
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public string ExtraData { get; set; }
}
Mapper.CreateMap<Source, SourceViewModel>();
当我想从源映射到SourceViewModel,一切都很好,我只是没有ExtraData
填充。但是我也想从一个SourceContainer
映射到SourceViewModel
,最好不指定每个属性的映射。
是否有可能告诉AutoMapper在进行映射时从子属性Source导入属性?比如:
Mapper.CreateMap<SourceContainer, SourceViewModel>()
.UseMappingForProperty(x => x.Source);
否则,我可以单独告诉AutoMapper关于SourceViewModel
上的每个属性,并从子源获取它,但我想知道是否有更优雅的方法。
我将使用.ConstructUsing
来初始化结果SourceViewModel
与内部Source
属性的映射:
Mapper.CreateMap<SourceContainer, SourceViewModel>()
.ConstructUsing(container => Mapper.Map<SourceViewModel>(container.Source));
ExtraData
将在SourceViewModel
构造之后按惯例进行映射。