System.Runtime.Remoting.Channels.AsyncMessageHelper.GetOutArgs C# (CSharp) Method

GetOutArgs() static private method

static private GetOutArgs ( ParameterInfo syncParams, Object syncArgs, Object endArgs ) : void
syncParams System.Reflection.ParameterInfo
syncArgs Object
endArgs Object
return void
        internal static void GetOutArgs(ParameterInfo[] syncParams, Object[] syncArgs, 
                                        Object[] endArgs)
        {
            int outCount = 0;

            for (int co = 0; co < syncParams.Length; co++)
            {
                if (syncParams[co].IsOut || syncParams[co].ParameterType.IsByRef)
                {
                    endArgs[outCount++] = syncArgs[co];
                }
            }
            
        } // GetOutArgs
    } // AsyncMessageHelper

Usage Example

        public void ServerCallback(IAsyncResult ar)
        {
            if (!(this._asyncEnd != (MethodInfo)null))
            {
                return;
            }
            RemotingMethodCachedData reflectionCachedData1 = InternalRemotingServices.GetReflectionCachedData((MethodBase)this._asyncEnd);
            RemotingMethodCachedData reflectionCachedData2 = InternalRemotingServices.GetReflectionCachedData(this._msg.MethodBase);

            ParameterInfo[] parameters = reflectionCachedData1.Parameters;
            object[]        objArray   = new object[parameters.Length];
            objArray[parameters.Length - 1] = (object)ar;
            object[] args = this._msg.Args;
            AsyncMessageHelper.GetOutArgs(reflectionCachedData2.Parameters, args, objArray);
            StackBuilderSink stackBuilderSink = new StackBuilderSink(this._serverObject);

            object[] outArgs1;
            object   ret = stackBuilderSink.PrivateProcessMessage(this._asyncEnd.MethodHandle, Message.CoerceArgs((MethodBase)this._asyncEnd, objArray, parameters), this._serverObject, out outArgs1);

            if (outArgs1 != null)
            {
                outArgs1 = ArgMapper.ExpandAsyncEndArgsToSyncArgs(reflectionCachedData2, outArgs1);
            }
            stackBuilderSink.CopyNonByrefOutArgsFromOriginalArgs(reflectionCachedData2, args, ref outArgs1);
            object[]           outArgs2           = outArgs1;
            int                argCount           = this._msg.ArgCount;
            LogicalCallContext logicalCallContext = Thread.CurrentThread.GetMutableExecutionContext().LogicalCallContext;
            IMethodCallMessage mcm = this._msg;

            this.AsyncProcessResponse((IMessage) new ReturnMessage(ret, outArgs2, argCount, logicalCallContext, mcm), (ITransportHeaders)null, (Stream)null);
        }
All Usage Examples Of System.Runtime.Remoting.Channels.AsyncMessageHelper::GetOutArgs
AsyncMessageHelper