PERWAPI.ClassRef.ResolveParent C# (CSharp) Méthode

ResolveParent() private méthode

private ResolveParent ( PEReader buff, bool isExtern ) : void
buff PEReader
isExtern bool
Résultat void
        internal virtual void ResolveParent(PEReader buff, bool isExtern)
        {
            CIx cIx = CIx.ResolutionScope;
            if (isExtern) cIx = CIx.Implementation;
            if (scope != null) return;
            MetaDataElement parentScope = buff.GetCodedElement(cIx,resScopeIx);
            if (parentScope is Module) {  // special code for glitch in Everett ilasm
                ClassDef newDef = new ClassDef((PEFile)parentScope,0,nameSpace,name);
                ((Module)parentScope).AddToClassList(newDef);
                buff.InsertInTable(MDTable.TypeRef,Row,newDef);
            } else {
                scope = (ReferenceScope)buff.GetCodedElement(cIx,resScopeIx);
                ClassRef existing = (ClassRef)scope.GetExistingClass(nameSpace,name);
                if (existing == null) {
                    scope.AddToClassList(this);
                } else {
                    if (isExtern)
                        buff.InsertInTable(MDTable.ExportedType,Row,existing);
                    else
                        buff.InsertInTable(MDTable.TypeRef,Row,existing);
                }
            }
        }

Usage Example

Exemple #1
0
 internal override void ResolveParent(PEReader buff, bool isExtern)
 {
     if (parent != null) return;
     CIx cIx = CIx.ResolutionScope;
     if (isExtern) cIx = CIx.Implementation;
     parent = (ClassRef)buff.GetCodedElement(cIx,resScopeIx);
     parent.ResolveParent(buff,isExtern);
     parent = (ClassRef)buff.GetCodedElement(cIx,resScopeIx);
     if (parent == null) return;
     NestedClassRef existing = parent.GetNestedClass(name);
     if (existing == null) {
         scope = parent.GetScope();
         parent.AddToClassList(this);
     } else if (isExtern)
         buff.InsertInTable(MDTable.ExportedType,Row,existing);
     else
         buff.InsertInTable(MDTable.TypeRef,Row,existing);
 }