private static bool TryAssignIAssignableReference(AssignmentOperatorType assignOperator, CustomVariable customVariable, object reference)
{
bool wasAssigned = false;
if (reference is IAssignableReference)
{
if (assignOperator == AssignmentOperatorType.Assign)
{
((IAssignableReference)reference).CurrentValue = customVariable.DefaultValue;
wasAssigned = true;
}
else if (assignOperator == AssignmentOperatorType.Add)
{
object currentValue = ((IAssignableReference)reference).CurrentValue;
object addedResult = PrimitiveOperationManager.Self.AddObjects(currentValue, customVariable.DefaultValue);
((IAssignableReference)reference).CurrentValue = addedResult;
wasAssigned = true;
}
else if (assignOperator == AssignmentOperatorType.Subtract)
{
object currentValue = ((IAssignableReference)reference).CurrentValue;
object addedResult = PrimitiveOperationManager.Self.SubtractObjects(currentValue, customVariable.DefaultValue);
((IAssignableReference)reference).CurrentValue = addedResult;
wasAssigned = true;
}
else if (assignOperator == AssignmentOperatorType.Multiply)
{
object currentValue = ((IAssignableReference)reference).CurrentValue;
object addedResult = PrimitiveOperationManager.Self.MultiplyObjects(currentValue, customVariable.DefaultValue);
((IAssignableReference)reference).CurrentValue = addedResult;
wasAssigned = true;
}
else if (assignOperator == AssignmentOperatorType.Divide)
{
object currentValue = ((IAssignableReference)reference).CurrentValue;
object addedResult = PrimitiveOperationManager.Self.DivideObjects(currentValue, customVariable.DefaultValue);
((IAssignableReference)reference).CurrentValue = addedResult;
wasAssigned = true;
}
}
return wasAssigned;
}