Exemplo n.º 1
0
        internal static CallInfo CreateCallInfo(MethodInfo method, ParameterInfo[] parameterInfos, string wrapperName)
        {
            InvocationParameterInfo[] parameters = new InvocationParameterInfo[parameterInfos.Length];
            for (int i = 0; i < parameterInfos.Length; i++)
            {
                ParameterInfo paramInfo = parameterInfos[i];
                Type          paramType = paramInfo.ParameterType;
                if (paramType.IsByRef)
                {
                    paramType = paramType.GetElementType();
                }

                InvocationParameterInfo invocationParamInfo = new InvocationParameterInfo(paramInfo.Name, i, paramType, ParameterType.ByVal);
                parameters[i] = invocationParamInfo;
            }

#if NET2
            return(new CallInfo(wrapperName, method, new ArrayList(), parameters, FastCall.GetMethodInvoker(method)));
#else
            return(new CallInfo(wrapperName, method, new ArrayList(), parameters));
#endif
        }
 public InterceptedParameter(InvocationParameterInfo parameterInfo, object[] rawParameters, int rawParameterIndex)
 {
     this.parameterInfo = parameterInfo;
     this.rawParameters = rawParameters;
     this.rawParameterIndex = rawParameterIndex;
 }
Exemplo n.º 3
0
 public InterceptedParameter(InvocationParameterInfo parameterInfo, object[] rawParameters, int rawParameterIndex)
 {
     this.parameterInfo     = parameterInfo;
     this.rawParameters     = rawParameters;
     this.rawParameterIndex = rawParameterIndex;
 }
Exemplo n.º 4
0
        internal static CallInfo CreateCallInfoForCtor(ConstructorInfo method, ParameterInfo[] parameterInfos, string wrapperName)
        {
            InvocationParameterInfo[] parameters = new InvocationParameterInfo[parameterInfos.Length+1];
            parameters[0] = new InvocationParameterInfo("_state", 0, typeof(object), ParameterType.ByVal);
            for (int i = 0; i < parameterInfos.Length; i++)
            {
                ParameterInfo paramInfo = parameterInfos[i];
                Type paramType = paramInfo.ParameterType;
                if (paramType.IsByRef)
                    paramType = paramType.GetElementType();

                InvocationParameterInfo invocationParamInfo = new InvocationParameterInfo(paramInfo.Name, i + 1, paramType, ParameterType.ByVal);
                parameters[i+1] = invocationParamInfo;
            }

            #if NET2
            return new CallInfo(wrapperName, method, new ArrayList(), parameters, FastCall.GetMethodInvoker(method));
            #else
            return new CallInfo(wrapperName,method, new ArrayList(),parameters);
            #endif
        }