private static GetTaskContinuationInstructions ( Mono.Cecil.Cil.ILProcessor processor, Mono.Cecil.Cil.VariableDefinition retvalVariableDefinition, Mono.Cecil.Cil.VariableDefinition attributeVariableDefinition, |
||
processor | Mono.Cecil.Cil.ILProcessor | |
retvalVariableDefinition | Mono.Cecil.Cil.VariableDefinition | |
attributeVariableDefinition | Mono.Cecil.Cil.VariableDefinition | |
taskContinuationMethodReference | ||
return | IEnumerable |
private static IEnumerable<Instruction> GetTaskContinuationInstructions(ILProcessor processor, VariableDefinition retvalVariableDefinition, VariableDefinition attributeVariableDefinition, MethodReference taskContinuationMethodReference)
{
if (retvalVariableDefinition != null) {
var tr = retvalVariableDefinition.VariableType;
if (tr.FullName.Contains("System.Threading.Tasks.Task"))
return new[]
{
processor.Create(OpCodes.Ldloc_S, attributeVariableDefinition),
processor.Create(OpCodes.Ldloc_S, retvalVariableDefinition),
processor.Create(OpCodes.Callvirt, taskContinuationMethodReference),
};
}
return new Instruction[0];
}