Skip to content

Commit 3b18c5a

Browse files
author
Sébastien Geiser
committed
Struct with Properties works better
1 parent 5aaa472 commit 3b18c5a

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,6 @@ void ExecuteBlocksStacks()
12021202
if (isContinue)
12031203
{
12041204
isContinue = false;
1205-
continue;
12061205
}
12071206
}
12081207
while (!isReturn && (bool)ManageJumpStatementsOrExpressionEval(keywordAttributes[0]));
@@ -1231,7 +1230,6 @@ void ExecuteBlocksStacks()
12311230
if (isContinue)
12321231
{
12331232
isContinue = false;
1234-
continue;
12351233
}
12361234
}
12371235
}
@@ -1289,7 +1287,6 @@ void forAction(int index)
12891287
if (isContinue)
12901288
{
12911289
isContinue = false;
1292-
continue;
12931290
}
12941291
}
12951292
}
@@ -1981,14 +1978,16 @@ private bool EvaluateVarOrFunc(string expr, string restOfExpression, Stack<objec
19811978
{
19821979
varValue = ((dynamic)member).GetValue(obj);
19831980

1984-
if (varValue is ValueType valueType && member is FieldInfo fieldInfo)
1981+
if (varValue is ValueType)
19851982
{
1986-
varValue = valueTypeNestingTrace = new ValueTypeNestingTrace
1983+
stack.Push(valueTypeNestingTrace = new ValueTypeNestingTrace
19871984
{
19881985
Container = valueTypeNestingTrace ?? obj,
1989-
Field = fieldInfo,
1990-
Value = valueType
1991-
};
1986+
Member = member,
1987+
Value = varValue
1988+
});
1989+
1990+
pushVarValue = false;
19921991
}
19931992
}
19941993

@@ -3121,22 +3120,21 @@ private class ValueTypeNestingTrace
31213120
{
31223121
public object Container { get; set; }
31233122

3124-
public FieldInfo Field { get; set; }
3123+
public MemberInfo Member { get; set; }
31253124

31263125
public object Value { get; set; }
31273126

31283127
public void AssignValue()
31293128
{
31303129
if(Container is ValueTypeNestingTrace valueTypeNestingTrace)
31313130
{
3132-
Field.SetValue(valueTypeNestingTrace.Value, Value);
3131+
((dynamic)Member).SetValue(valueTypeNestingTrace.Value, Value);
31333132
valueTypeNestingTrace.AssignValue();
31343133
}
31353134
else
31363135
{
3137-
Field.SetValue(Container, Value);
3136+
((dynamic)Member).SetValue(Container, Value);
31383137
}
3139-
31403138
}
31413139
}
31423140

0 commit comments

Comments
 (0)