Я успешно использую 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>