Основываясь на вопросе это, я хочу знать, могу ли я опустить CreateMap<PERSON, Person>();
Я использую Automapper 7.0.1, и профиль имеет следующий вид
public class AutoMapperProfile : Profile
{
public AutoMapperProfile()
{
//...
//...
SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
DestinationMemberNamingConvention = new PascalCaseNamingConvention();
CreateMap<PERSON, Person>(); //what I want to omit
}
}
Я заметил, что если я удалю эту строку CreateMap<PERSON, Person>();, то будут сопоставлены только те свойства, которые не содержат подчеркивания, и сопоставитель выдает исключение с сообщением о том, что есть несопоставленные свойства и их список.
Почему мы хотим использовать CreateMap, если мы хотим отобразить все свойства только на основе соглашения об именах?
Обновлено:
После ответа @Lucian я удалил соглашение об именах из профиля и добавил его при инициализации, как это
Mapper.Initialize(cfg =>
{
cfg.AddProfile<AutoMapperProfile>();
cfg.SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
});
Теперь мне не нужно использовать CreateMap.





Карта по умолчанию (созданная AM, если вы опускаете CreateMap) является глобальной, ее, конечно же, нет в том профиле, который вы создали. Поэтому установка соглашений об именах в вашем профиле не помогает. Установите соглашения об именах в глобальной конфигурации.
Спасибо! Я удалил соглашение об именах из профиля и добавил при инициализации. Теперь это работает.
Я инициализирую его вот так
Mapper.Initialize(cfg => { cfg.AddProfile<AutoMapperProfile>(); });Вы можете показать один пример, как установить его глобально?