【问题标题】:AutoMapper Take Properties from ChildAutoMapper 从子级获取属性
【发布时间】:2014-10-11 19:03:12
【问题描述】:

我的模型类似于以下:

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

【问题讨论】:

    标签: c# automapper


    【解决方案1】:

    我将使用.ConstructUsing 来初始化生成的SourceViewModel,并使用映射内部Source 属性的结果:

    Mapper.CreateMap<SourceContainer, SourceViewModel>()
        .ConstructUsing(container => Mapper.Map<SourceViewModel>(container.Source));
    

    ExtraData 将在 SourceViewModel 构造完成后被映射。

    【讨论】:

    • 完美!这正是我想要的。谢谢!
    • @user1256653:没问题,很乐意提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多