System.Reflection.MetadataImport.EnumParamsCount C# (CSharp) Method

EnumParamsCount() public method

public EnumParamsCount ( int mdMethodDef ) : int
mdMethodDef int
return int
        public int EnumParamsCount(int mdMethodDef) 
        {
            return EnumCount((int)MetadataTokenType.ParamDef, mdMethodDef);
        }

Usage Example

Esempio n. 1
0
        internal static unsafe ParameterInfo[] GetParameters(MethodBase method, MemberInfo member, Signature sig, out ParameterInfo returnParameter, bool fetchReturnParameter)
        {
            RuntimeMethodHandle methodHandle = method.GetMethodHandle();

            returnParameter = null;
            int length = sig.Arguments.Length;

            ParameterInfo[] infoArray = fetchReturnParameter ? null : new ParameterInfo[length];
            int             methodDef = methodHandle.GetMethodDef();
            int             count     = 0;

            if (!System.Reflection.MetadataToken.IsNullToken(methodDef))
            {
                MetadataImport metadataImport = methodHandle.GetDeclaringType().GetModuleHandle().GetMetadataImport();
                count = metadataImport.EnumParamsCount(methodDef);
                int *result = stackalloc int[count];
                metadataImport.EnumParams(methodDef, result, count);
                for (uint i = 0; i < count; i++)
                {
                    ParameterAttributes attributes;
                    int num5;
                    int parameterToken = result[(int)((int *)i)];
                    metadataImport.GetParamDefProps(parameterToken, out num5, out attributes);
                    num5--;
                    if (fetchReturnParameter && (num5 == -1))
                    {
                        returnParameter = new ParameterInfo(sig, metadataImport, parameterToken, num5, attributes, member);
                    }
                    else if (!fetchReturnParameter && (num5 >= 0))
                    {
                        infoArray[num5] = new ParameterInfo(sig, metadataImport, parameterToken, num5, attributes, member);
                    }
                }
            }
            if (fetchReturnParameter)
            {
                if (returnParameter == null)
                {
                    returnParameter = new ParameterInfo(sig, MetadataImport.EmptyImport, 0, -1, ParameterAttributes.None, member);
                }
                return(infoArray);
            }
            if (count < (infoArray.Length + 1))
            {
                for (int j = 0; j < infoArray.Length; j++)
                {
                    if (infoArray[j] == null)
                    {
                        infoArray[j] = new ParameterInfo(sig, MetadataImport.EmptyImport, 0, j, ParameterAttributes.None, member);
                    }
                }
            }
            return(infoArray);
        }
All Usage Examples Of System.Reflection.MetadataImport::EnumParamsCount