Документация очень краткая на веб-сайте AutoMapper. Из того, что я могу сказать, второй параметр в Mapper.Map
используется только для определения типа возвращаемого значения и фактически не изменяется. Это связано с тем, что он позволяет выполнять динамическое сопоставление на основе существующего объекта, тип которого известен только во время выполнения, вместо жесткого кодирования типа в обобщениях.
Итак, проблема в вашем коде состоит в том, что вы не используете возвращаемое значение Mapper.Map
, которое фактически содержит конечный преобразованный объект. Вот измененная версия вашего кода, которую я протестировал, и правильно возвращает преобразованные объекты, как вы ожидаете.
var contacts = ContactRepository.GetAll();
var options = Mapper.Map(contacts, new Dictionary<Guid, string>());
// options should now contain the mapped version of contacts
Хотя было бы эффективнее использовать универсальную версию вместо создания ненужного объекта, просто чтобы указать тип:
var options = Mapper.Map<List<Contact>, Dictionary<Guid, string>>(contacts);
Вот пример рабочего кода , который можно запустить в LinqPad (для запуска примера необходима ссылка на сборку AutoMapper.dll .)
Надеюсь, это поможет!