public override void Generate (ILGenerator gen) { if (incMet != null) { CodeGenerationHelper.GenerateMethodCall (gen, null, incMet, exp); return; } exp.Generate (gen); Type t = exp.GetResultType (); switch (Type.GetTypeCode (t)) { case TypeCode.Byte: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); gen.Emit (OpCodes.Conv_U1); break; case TypeCode.Double: gen.Emit (OpCodes.Ldc_R8, 1); gen.Emit (OpCodes.Add); break; case TypeCode.Int16: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); gen.Emit (OpCodes.Conv_I2); break; case TypeCode.UInt32: case TypeCode.Int32: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); break; case TypeCode.UInt64: case TypeCode.Int64: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); gen.Emit (OpCodes.Conv_U8); break; case TypeCode.SByte: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); gen.Emit (OpCodes.Conv_I1); break; case TypeCode.Single: gen.Emit (OpCodes.Ldc_R4, 1); gen.Emit (OpCodes.Add); break; case TypeCode.UInt16: gen.Emit (OpCodes.Ldc_I4_1); gen.Emit (OpCodes.Add); gen.Emit (OpCodes.Conv_U2); break; } }
public override void Generate(ILGenerator gen) { if (codeMethod != null) { CodeGenerationHelper.GenerateMethodCall(gen, target, codeMethod, parameters); } else { CodeGenerationHelper.GenerateMethodCall(gen, target, method, parameters); } }
public override void Generate(ILGenerator gen) { if (exp1.GetResultType() == typeof(string)) { MethodInfo m = typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string) }); CodeGenerationHelper.GenerateMethodCall(gen, null, m, exp1, exp2); } else { exp1.Generate(gen); exp2.Generate(gen); gen.Emit(OpCodes.Add); } }
public override void GenerateSet(ILGenerator gen, CodeExpression value) { CodeGenerationHelper.GenerateMethodCall(gen, target, property.GetSetMethod(), value); }
public override void Generate(ILGenerator gen) { CodeGenerationHelper.GenerateMethodCall(gen, target, property.GetGetMethod()); }
public override void Generate(ILGenerator gen) { exp.Generate(gen); Type t = exp.GetResultType(); switch (Type.GetTypeCode(t)) { case TypeCode.Byte: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); gen.Emit(OpCodes.Conv_U1); break; case TypeCode.Decimal: MethodInfo met = typeof(Decimal).GetMethod("op_Increment"); CodeGenerationHelper.GenerateMethodCall(gen, null, met, exp); break; case TypeCode.Double: gen.Emit(OpCodes.Ldc_R8, 1); gen.Emit(OpCodes.Add); break; case TypeCode.Int16: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); gen.Emit(OpCodes.Conv_I2); break; case TypeCode.UInt32: case TypeCode.Int32: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); break; case TypeCode.UInt64: case TypeCode.Int64: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); gen.Emit(OpCodes.Conv_U8); break; case TypeCode.SByte: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); gen.Emit(OpCodes.Conv_I1); break; case TypeCode.Single: gen.Emit(OpCodes.Ldc_R4, 1); gen.Emit(OpCodes.Add); break; case TypeCode.UInt16: gen.Emit(OpCodes.Ldc_I4_1); gen.Emit(OpCodes.Add); gen.Emit(OpCodes.Conv_U2); break; } exp.GenerateSet(gen, exp); }