AutoMapper: как отобразить динамические c на <T>с помощью заменителя имени свойства - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь сопоставить динамический 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 сопоставление объектов

...