PERWAPI.MethodRef.ResolveParent C# (CSharp) Метод

ResolveParent() приватный Метод

private ResolveParent ( PEReader buff ) : Member
buff PEReader
Результат Member
        internal override Member ResolveParent(PEReader buff)
        {
            if (parent != null) return this;
            buff.currentMethodScope = this;
            MetaDataElement paren = buff.GetCodedElement(CIx.MemberRefParent,parentIx);
            buff.currentMethodScope = null;
            if (paren is MethodDef) {
                parent = null;
                varArgParent = (MethodDef)paren;
                //this.sig = buff.ReadMethSig(this,name,sigIx);
                ((MethodDef)paren).AddVarArgSig(this);
                return this;
            } else if (paren is ClassSpec) {
                ((ClassSpec)paren).AddMethod(this);
                return this;
            } else if (paren is PrimitiveType) {
                paren = MSCorLib.mscorlib.GetDefaultClass();
            } else if (paren is ClassDef) {
                this.sig = buff.ReadMethSig(this,name,sigIx);
                return ((ClassDef)paren).GetMethod(this.sig);
            } else if (paren is TypeSpec) {
                paren = new ConstructedTypeSpec((TypeSpec)paren);
                //Console.WriteLine("Got TypeSpec as parent of Member");
                //return this;
                //throw new Exception("Got TypeSpec as parent of Member");
                //((TypeSpec)paren).AddMethod(buff,this);
            }
            if (paren is ReferenceScope)
                parent = ((ReferenceScope)paren).GetDefaultClass();
            parent = (Class)paren;
            //if ((MethodRef)parent.GetMethodDesc(name) != null) throw new PEFileException("Existing method!!");
            //sig = buff.ReadMethSig(this,name,sigIx);
            //MethodRef existing = (MethodRef)parent.GetMethod(sig);
            //if (existing != null)
            //  return existing;
            parent.AddToMethodList(this);
            return this;
        }