首页 > 解决方案 > 创建将可变数量的成员映射到一个的映射器

问题描述

我已经成功使用 AutoMapper 一段时间了。我所有的映射都相当简单,因为它们只是将一个属性映射到另一个属性。这个小程序只是使用 System.Xml.Serialization 映射 xml 序列化的属性。

但是,我遇到了需要将许多属性映射到一个属性的情况。

我有一个名为 FieldSample 的对象,它有一个名为 StatesFoundIn 的属性,我将其编写为如下所示:

public class StatesFoundIn
{
    [XmlText]
    public String StateId { get; set; }

    [XmlAttribute("nation")]
    public String Purpose
    {
        get { return "USA"; }
    }

    public StatesFoundIn(String stateId)
    {
        StateId = stateId;
    }

}

这会生成一行如下所示的 XML:

<StatesFoundIn nation="USA">NY</StatesFoundIn>

AutoMapper 当前映射如下所示:

cfg.CreateMap<Plant, FieldSample>()
    .ForMember(d => d.StatesFoundIn, opt => opt.MapFrom(src => src.State))

现在显然这只会返回一个结果。

如果我可以编写一个返回状态数组的方法,有时像“ src.GetAllStates() ”而不是像“ src.State ”那样,有没有办法让映射器返回一个列表或数组字符串,以便如果有多个状态,我的 XML 输出有时看起来像这样?

<StatesFoundIn nation="USA">NY</StatesFoundIn>
<StatesFoundIn nation="USA">PA</StatesFoundIn>
<StatesFoundIn nation="USA">WV</StatesFoundIn>
<StatesFoundIn nation="USA">OH</StatesFoundIn>

标签: c#automapper

解决方案


推荐阅读