Esempio n. 1
0
        // [Xamarin] Expression evaluator.
        public override System.Reflection.ParameterInfo[] GetParameters()
        {
            ArrayList al    = new ArrayList();
            IntPtr    hEnum = new IntPtr();
            int       nArg  = 0;

            try
            {
                while (true)
                {
                    uint count;
                    int  paramToken;
                    m_importer.EnumParams(ref hEnum,
                                          m_methodToken, out paramToken, 1, out count);
                    if (count != 1)
                    {
                        break;
                    }
                    MetadataParameterInfo mp = new MetadataParameterInfo(m_importer, paramToken,
                                                                         this, DeclaringType, m_argTypes [nArg++]);
                    if (mp.Name != string.Empty)
                    {
                        al.Add(mp);
                    }
                }
            }
            finally
            {
                m_importer.CloseEnum(hEnum);
            }
            return((ParameterInfo[])al.ToArray(typeof(ParameterInfo)));
        }
Esempio n. 2
0
        // [Xamarin] Expression evaluator.
        public override System.Reflection.ParameterInfo[] GetParameters()
        {
            ArrayList al    = new ArrayList();
            IntPtr    hEnum = new IntPtr();
            int       nArg  = 0;

            try
            {
                while (true)
                {
                    int   count;
                    int[] paramToken = new int[1];
                    m_importer.EnumParams(out hEnum,
                                          m_methodToken, paramToken, 1, out count);
                    if (count != 1)
                    {
                        break;
                    }
                    // this fixes IndexOutOfRange exception. Sometimes EnumParams gives you a param with position that is out of m_argTypes.Count
                    // return typeof(object) for unmatched parameter
                    Type argType = nArg < m_argTypes.Count ? m_argTypes[nArg++] : typeof(object);

                    var mp = new MetadataParameterInfo(m_importer, paramToken[0], this, argType);
                    if (mp.Name != String.Empty)
                    {
                        al.Add(mp);
                    }
                    //al.Add(new MetadataParameterInfo(m_importer,paramToken,
                    //                                 this,DeclaringType));
                }
            }
            finally
            {
                m_importer.CloseEnum(hEnum);
            }
            return((ParameterInfo[])al.ToArray(typeof(ParameterInfo)));
        }
Esempio n. 3
0
		// [Xamarin] Expression evaluator.
        public override System.Reflection.ParameterInfo[] GetParameters()
        {
            ArrayList al = new ArrayList();
            IntPtr hEnum = new IntPtr();
			int nArg = 0;
            try 
            {
                while(true) 
                {
                    uint count;
                    int paramToken;
                    m_importer.EnumParams(ref hEnum,
                                          m_methodToken, out paramToken,1,out count);
                    if(count!=1)
                        break;
					MetadataParameterInfo mp = new MetadataParameterInfo (m_importer, paramToken,
													 this, DeclaringType, m_argTypes [nArg++]);
					if (mp.Name != string.Empty)
						al.Add(mp);
                }
            }
            finally 
            {
                m_importer.CloseEnum(hEnum);
            }
            return (ParameterInfo[]) al.ToArray(typeof(ParameterInfo));
        }