Создать маппер, который отображает переменное количество членов в один - PullRequest
0 голосов
/ 01 октября 2019

Я успешно использую AutoMapper в течение некоторого времени. Все мои отображения были довольно просты, поскольку они просто отображали одно свойство в другое. Эта маленькая программа просто отображает свойства для сериализации xml, используя System.Xml.Serialization.

Однако я столкнулся с ситуацией, когда мне нужно сопоставить многие свойства одному свойству.

У меня естьодин объект с именем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...