При создании карты для места назначения класса на основе интерфейса и класса источника на основе другого класса, autopper опускает свойства, новые для класса назначения, сопоставленные с конфигурацией cutom (с использованием ForMember и MapFrom).
Исходный класс и Исходный базовый класс:
public class SourceDictionary: SourceBaseDictionary
{
public SourceDictionary(int id, string code, string name);
}
public class SourceBaseDictionary: ISourceDictionary
{
public SourceBaseDictionary();
public int Id { get; protected internal set; }
public string Code { get; protected internal set; }
public string Name { get; protected internal set; }
}
Целевой класс:
public class DestinationDictionary:IDestinationDictionary
{
public int Id { get; set ; }
public int Value { get; set; }
public string Code { get; set; }
string Label { get; set; }
string Name { get; set; }
}
Моя конфигурация для Automapper:
public class AutoMapperDictionary : Profile
{
public AutoMapperDictionary()
{
CreateMap<SourceDictionary, DestinationDictionary>()
.ForMember(vm => vm.Value, map => map.MapFrom(m => m.Id))
.ForMember(vm => vm.Label, map => map.MapFrom(m => m.Name));
}
}
И вот почему я получаюсейчас:
{
"id": 1,
"value": 0,
"code": "codeTest",
"label": null,
"name": "nameTest"
}
Почему значение свойства и метка не совпадают со значением идентификатора и имени?
РЕДАКТИРОВАТЬ (с дополнительной информацией)
В моем запуске до services.AddMvc () я получаю:
services.AddAutoMapper();
Mapper.Initialize(x =>
{
x.AddProfile(new AutoMapperDictionary());
x.ValidateInlineMaps = false;
});
Когда я использую функцию карты:
var queryResult = await conn.QueryAsync<SourceDictionary>(query);
var newDestinationDictionaryList = queryResult.ToList().Select(req => Mapper.Map<DestinationDictionary>(req))
Когда я комментирую строку "x.ValidateInlineMaps =false "Я получил исключение:
AutoMapperConfigurationException ...
Найдены несопоставленные элементы ....
Несопоставленные свойства:
Значение
Метка