我的模型类似于以下内容:
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
上的每个属性,并从子Source中获取它,但是我想知道是否有更优雅的方法。 最佳答案
我将使用.ConstructUsing
初始化内部SourceViewModel
属性的映射结果来生成结果Source
:
Mapper.CreateMap<SourceContainer, SourceViewModel>()
.ConstructUsing(container => Mapper.Map<SourceViewModel>(container.Source));
在构造
ExtraData
之后,将方便地映射SourceViewModel
。