У меня есть 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 перезаписывает значения на исходные.
Любые мысли о том, что здесь происходит ??
Заранее спасибо!