AutoMapper从Child获取属性

时间:2014-08-18 19:20:55

标签: c# automapper

我的模型类似于以下内容:

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上的每个属性,并从子源获取它,但我想知道是否有更优雅的方法。

1 个答案:

答案 0 :(得分:2)

我会使用.ConstructUsing初始化生成的SourceViewModel,其中包含映射内部Source属性的结果:

Mapper.CreateMap<SourceContainer, SourceViewModel>()
    .ConstructUsing(container => Mapper.Map<SourceViewModel>(container.Source));
ExtraData构建之后,

SourceViewModel将被定位。