Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EmitMemberAssignment() [1/2]

void System.Linq.Expressions.Compiler.LambdaCompiler.EmitMemberAssignment ( AssignBinaryExpression node,
CompilationFlags flags )
inlineprivate

Definition at line 1658 of file LambdaCompiler.cs.

1659 {
1660 MemberExpression memberExpression = (MemberExpression)node.Left;
1661 MemberInfo member = memberExpression.Member;
1662 Type type = null;
1663 if (memberExpression.Expression != null)
1664 {
1666 }
1667 EmitExpression(node.Right);
1668 LocalBuilder local = null;
1669 CompilationFlags compilationFlags = flags & CompilationFlags.EmitAsTypeMask;
1670 if (compilationFlags != CompilationFlags.EmitAsVoidType)
1671 {
1674 }
1675 if (member is FieldInfo)
1676 {
1677 _ilg.EmitFieldSet((FieldInfo)member);
1678 }
1679 else
1680 {
1681 PropertyInfo propertyInfo = (PropertyInfo)member;
1682 EmitCall(type, propertyInfo.GetSetMethod(nonPublic: true));
1683 }
1684 if (compilationFlags != CompilationFlags.EmitAsVoidType)
1685 {
1688 }
1689 }
void EmitInstance(Expression instance, out Type type)
void EmitCall(Type objectType, MethodInfo method)
virtual void Emit(OpCode opcode)
static readonly OpCode Stloc
Definition OpCodes.cs:429
static readonly OpCode Ldloc
Definition OpCodes.cs:425
static readonly OpCode Dup
Definition OpCodes.cs:77

References System.Linq.Expressions.Compiler.LambdaCompiler._ilg, System.Reflection.Emit.OpCodes.Dup, System.Reflection.Emit.ILGenerator.Emit(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitCall(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitInstance(), System.Linq.Expressions.Compiler.LambdaCompiler.FreeLocal(), System.Linq.Expressions.Compiler.LambdaCompiler.GetLocal(), System.Reflection.PropertyInfo.GetSetMethod(), System.Reflection.Emit.OpCodes.Ldloc, System.Reflection.Emit.OpCodes.Stloc, and System.type.

Referenced by System.Linq.Expressions.Compiler.LambdaCompiler.EmitAssign(), and System.Linq.Expressions.Compiler.LambdaCompiler.EmitBinding().