Automapper: несколько значений назначения, заполненных из одного исходного значения - PullRequest
3 голосов
/ 13 февраля 2012

Мой DTO (пункт назначения) имеет несколько логических значений.

Например:

HasThisOption
HasThatOption
HasSomeOtherOption

Эти значения заполняются путем выполнения некоторых вычислений в одном из полей объекта модели.(источник).Это вычисление немного дорого, поэтому вместо того, чтобы делать одно и то же вычисление для каждого поля в DTO, я хотел бы выполнить вычисление только один раз.

Простое решение состоит в том, чтобы просто вызвать функцию из моего контроллера .. то есть .. PopulateFields (source, dest)

Но я не хочу получать вызовы Ignore для каждого поля назначения вмоя конфигурация картографа ... потому что их около 40 ... и это выглядит грязно и на самом деле не имеет никакого смысла делать это.

Что обычно делают в этой ситуации?

1 Ответ

4 голосов
/ 13 февраля 2012

Вы можете использовать AfterMap при определении вашего соответствия между источником и типом назначения:

Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) =>
{
    // do your custom computations and assignments here
});

Если логические поля отсутствуют в типе источника, они все равно будут игнорироваться во время стандартного сопоставления и будут иметь значения по умолчанию в месте назначения. Метод AfterMap позволяет изменять их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...