예제 #1
0
        public override bool Equals(object obj)
        {
            MetadataOnlyParameterInfo metadataOnlyParameterInfo = obj as MetadataOnlyParameterInfo;

            if (metadataOnlyParameterInfo == null)
            {
                return(false);
            }
            if (!metadataOnlyParameterInfo.m_resolver.Equals(this.m_resolver))
            {
                return(false);
            }
            return(metadataOnlyParameterInfo.m_parameterToken.Equals(this.m_parameterToken));
        }
예제 #2
0
 public override ParameterInfo[] GetParameters()
 {
     unsafe
     {
         uint         num;
         uint         num1;
         uint         num2;
         uint         num3;
         uint         num4;
         uint         num5;
         int          num6;
         UnusedIntPtr unusedIntPtr;
         if (!this.m_fullyInitialized)
         {
             this.Initialize();
         }
         int             length            = (int)this.m_descriptor.Parameters.Length;
         ParameterInfo[] fakeParameterInfo = new ParameterInfo[length];
         Type[]          type = new Type[length];
         for (int i = 0; i < length; i++)
         {
             type[i] = this.m_descriptor.Parameters[i].Type;
         }
         int[]           numArray  = new int[length + 1];
         IMetadataImport rawImport = this.m_resolver.RawImport;
         HCORENUM        hCORENUM  = new HCORENUM();
         if (rawImport.EnumParams(ref hCORENUM, this.m_methodDef.Value, numArray, (int)numArray.Length, out num) == 1)
         {
             for (int j = 0; j < length; j++)
             {
                 fakeParameterInfo[j] = this.Resolver.Policy.GetFakeParameterInfo(this, type[j], j);
             }
             return(fakeParameterInfo);
         }
         hCORENUM.Close(rawImport);
         if (num == 0)
         {
             return(fakeParameterInfo);
         }
         ParameterInfo metadataOnlyParameterInfo = null;
         for (int k = 0; (long)k < (ulong)num; k++)
         {
             int num7 = numArray[k];
             rawImport.GetParamProps(num7, out num6, out num3, null, 0, out num2, out num1, out num4, out unusedIntPtr, out num5);
             if (num3 != 0)
             {
                 uint num8 = num3 - 1;
                 fakeParameterInfo[num8] = new MetadataOnlyParameterInfo(this.m_resolver, new Token(num7), type[num8], this.m_descriptor.Parameters[num8].CustomModifiers);
             }
             else
             {
                 metadataOnlyParameterInfo = new MetadataOnlyParameterInfo(this.m_resolver, new Token(num7), this.ReturnType, this.m_descriptor.ReturnParameter.CustomModifiers);
             }
         }
         if (metadataOnlyParameterInfo == null)
         {
             metadataOnlyParameterInfo = this.Resolver.Policy.GetFakeParameterInfo(this, this.ReturnType, -1);
         }
         this.m_returnParameter = metadataOnlyParameterInfo;
         for (int l = 0; l < length; l++)
         {
             if (fakeParameterInfo[l] == null)
             {
                 fakeParameterInfo[l] = this.Resolver.Policy.GetFakeParameterInfo(this, type[l], l);
             }
         }
         return(fakeParameterInfo);
     }
 }