我的模型类似于以下内容:
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>();
当我想从Source映射到SourceViewModel时,一切都很好,我只是没有填充ExtraData
。但我也希望从SourceContainer
映射到SourceViewModel
,最好不指定每个属性的映射。
在进行映射时,是否可以告诉AutoMapper从子属性Source导入属性?类似的东西:
Mapper.CreateMap<SourceContainer, SourceViewModel>()
.UseMappingForProperty(x => x.Source);
否则我可以分别告诉AutoMapper SourceViewModel
上的每个属性,并从子源获取它,但我想知道是否有更优雅的方法。
答案 0 :(得分:2)
我会使用.ConstructUsing
初始化生成的SourceViewModel
,其中包含映射内部Source
属性的结果:
Mapper.CreateMap<SourceContainer, SourceViewModel>()
.ConstructUsing(container => Mapper.Map<SourceViewModel>(container.Source));
在ExtraData
构建之后, SourceViewModel
将被定位。