Я просто разбираюсь с AutoMapper и люблю, как это работает. Однако я считаю, что он может отображать некоторые сложные сценарии, которые я сейчас подключаю вручную. У кого-нибудь есть предложения/советы по удалению моих ручных процессов из упрощенного примера, приведенного ниже, и ускорения моей кривой обучения?AutoMapper - комплексное отображение с использованием вызова функции
У меня есть исходный объект следующим образом:
public class Source
{
public Dictionary<string, object> Attributes;
public ComplexObject ObjectWeWantAsJson;
}
и объект назначения так:
public class Destination
{
public string Property1; // Matches with Source.Attributes key
public string Property2; // Matches with Source.Attributes key
// etc.
public string Json;
}
Моя конфигурация для AutoMapper минимальна:
var config = new MapperConfiguration(cfg => {});
var mapper = config.CreateMapper();
И мое преобразование код выглядит так:
var destinationList = new List<Destination>();
foreach (var source in sourceList)
{
var dest = mapper.Map<Dictionary<string, object>, Destination(source.Attributes);
// I'm pretty sure I should be able to combine this with the mapping
// done in line above
dest.Json = JsonConvert.SerializeObject(source.ObjectWeWantAsJson);
// I also get the impression I should be able to map a whole collection
// rather than iterating through each item myself
destinationList.Add(dest);
}
Любые указатели или предложения наиболее ценятся. Заранее спасибо!
Спасибо за предложение, но это кажется почти шаг назад, чтобы вручную сопоставить каждый атрибут к свойству, когда текущее решение не требует этого (там около 20 атрибутов к карте, и есть несколько классов, как это = много написано кода Я надеялся, что AutoMapper отрицает необходимость). Мне интересно, есть ли подход «лучший из двух миров», который я могу использовать. Может быть, картограф внутри конвертера для атрибутов, но это звучит беспорядочно. Вы предложили мне подход, чтобы попробовать - экспериментируйте и посмотрите, могу ли я получить автоматическое сопоставление словарей внутри конвертера. – Gavin