Automapper ConstructUsing изменяющиеся значения - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть CreateMap:

            CreateMap<ExtractInsertRequestViewModel, Extract>()
            .ConstructUsing(source => new Extract(source.MemberId,
                source.IsChargeBack,
                source.Type,
                source.Description,
                source.Value,
                source.VerifyBalanceBeforeRedeem))

Затем я выполняю преобразование (vm - моя модель просмотра):

var extract = Mapper.Map<Extract>(vm);

Но внутри моего Extract Ctor у меня есть 2 функции, которые могутизменить значения (SetStatus и SetValue):

    public Extract(int memberId, bool isChargeBack, ExtractType type, string description, int value, bool verifyBalanceBeforeRedeem)
    {
        MemberId = memberId;
        IsChargeBack = isChargeBack;
        Type = type;
        Description = description;
        SetStatus(Status.A);
        IsAble = true;
        VerifyBalanceBeforeRedeem = verifyBalanceBeforeRedeem;
        SetValue(value);
    }

    public void SetValue(int newValue)
    {
        if (Type == ExtractType.DEBIT && newValue > 0 || Type == ExtractType.CREDIT && newValue < 0)
            newValue = newValue * -1;

        Value = newValue;
    }

Проблема заключается в том, что после изменения значения какой-либо из этих функций результат объекта Extract создается с исходными значениями.

Например: я прошел операцию дебета с положительным значением.Метод SetValue должен преобразовываться в отрицательный, но в конечном объекте значение все еще положительное.

Мне кажется, что ConstructUsing запускается после конструктора.Конструктор установил правильные значения, но ConstructUsing перезаписывает значения на исходные.

Любые мысли о том, что здесь происходит ??

Заранее спасибо!

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