コード例 #1
0
        public static int RegisterCallConversionInfo(ThunkKind thunkKind, IntPtr targetPointer, RuntimeSignature methodSignature, IntPtr instantiatingArg, RuntimeTypeHandle[] typeArgs, RuntimeTypeHandle[] methodArgs)
        {
            CallConversionInfo newConversionInfo = new CallConversionInfo();

            newConversionInfo._registrationKind      = CallConversionInfoRegistrationKind.UsesMethodSignatureAndGenericArgs;
            newConversionInfo._thunkKind             = thunkKind;
            newConversionInfo._targetFunctionPointer = targetPointer;
            newConversionInfo._methodSignature       = methodSignature;
            newConversionInfo._instantiatingArg      = instantiatingArg;
            newConversionInfo._typeArgs        = typeArgs;
            newConversionInfo._methodArgs      = methodArgs;
            newConversionInfo._signatureParsed = false;

            return(AddConverter(newConversionInfo));
        }
コード例 #2
0
        public static int RegisterCallConversionInfo(ThunkKind thunkKind,
                                                     IntPtr targetPointer,
                                                     IntPtr instantiatingArg,
                                                     ArgIteratorData argIteratorData,
                                                     bool[] paramsByRefForced)
        {
            Debug.Assert(argIteratorData != null);

            CallConversionInfo newConversionInfo = new CallConversionInfo();

            newConversionInfo._registrationKind      = CallConversionInfoRegistrationKind.UsesArgIteratorData;
            newConversionInfo._thunkKind             = thunkKind;
            newConversionInfo._targetFunctionPointer = targetPointer;
            newConversionInfo._instantiatingArg      = instantiatingArg;
            newConversionInfo._argIteratorData       = argIteratorData;
            newConversionInfo._paramsByRefForced     = paramsByRefForced;
            newConversionInfo._signatureParsed       = true;

            return(AddConverter(newConversionInfo));
        }
コード例 #3
0
        public static int RegisterCallConversionInfo(ThunkKind thunkKind,
                                                     IntPtr targetPointer,
                                                     IntPtr instantiatingArg,
                                                     bool hasThis,
                                                     TypeHandle returnType,
                                                     TypeHandle[] parameterTypes,
                                                     bool[] paramsByRefForced)
        {
            CallConversionInfo newConversionInfo = new CallConversionInfo();

            newConversionInfo._registrationKind      = CallConversionInfoRegistrationKind.UsesArgIteratorData;
            newConversionInfo._thunkKind             = thunkKind;
            newConversionInfo._targetFunctionPointer = targetPointer;
            newConversionInfo._instantiatingArg      = instantiatingArg;
            newConversionInfo._argIteratorData       = new ArgIteratorData(hasThis, false, parameterTypes, returnType);
            newConversionInfo._paramsByRefForced     = paramsByRefForced;
            newConversionInfo._signatureParsed       = true;

            return(AddConverter(newConversionInfo));
        }