Boo.Lang.Compiler.Steps.InjectCallableConversions.ReplaceEndInvokeTargetByGetAsyncDelegate C# (CSharp) Метод

ReplaceEndInvokeTargetByGetAsyncDelegate() приватный Метод

private ReplaceEndInvokeTargetByGetAsyncDelegate ( MethodInvocationExpression node ) : void
node MethodInvocationExpression
Результат void
        void ReplaceEndInvokeTargetByGetAsyncDelegate(MethodInvocationExpression node)
        {
            Expression asyncResult = node.Arguments[node.Arguments.Count-1];
            MemberReferenceExpression endInvoke = (MemberReferenceExpression)node.Target;
            IType callableType = ((IMember)endInvoke.Entity).DeclaringType;

            endInvoke.Target = CodeBuilder.CreateCast(callableType,
                                    CodeBuilder.CreateMethodInvocation(
                                        CodeBuilder.CreateCast(_asyncResultType, asyncResult.CloneNode()),
                                        _asyncResultTypeAsyncDelegateGetter));
        }