Я пытаюсь сопоставить динамический c объект с типом класса, используя AutoMapper , причем динамический c объект имеет подчеркивания в именах полей, а целевой тип класса имеет свойства, которые пишутся одинаково, но без подчеркивания.
Исходный динамический объект c выглядит следующим образом:
new ExpandoObject { CENSUS_YR = 2001, BIRTH_DATE = '1998-10-02' }
Целевой типизированный класс выглядит следующим образом:
new TDest { CENSUSYR, BIRTH_DATE }
Я попробовал следующее, но это не сработало:
var mapperConfig = new MapperConfiguration(cfg => {
cfg.ReplaceMemberName("_", "");
// also tried this
cfg.AddMemberConfiguration().AddName<ReplaceName>(name => name.AddReplace("_", ""));
});
mapperConfig.AssertConfigurationIsValid();
var mapper = mapperConfig.CreateMapper();
var mappedRecords = dynamicRecordsSource.Select(r => mapper.Map<TDest>(r)).ToArray();
Приведенный выше код приводит к тому, что все элементы в массиве mappedRecords
имеют все нулевые значения или значения по умолчанию. Я также пробовал различные перегрузки метода .Map()
, но все еще ничего. Я подозреваю, что я пропустил какой-то базовый шаг настройки c. Официальная документация не дает много примеров, кроме базовых c dynamici c сопоставление объектов