in ILRepack/ReferenceFixator.cs [123:150]
internal void FixReferences(TypeDefinition type)
{
FixReferences(type.GenericParameters);
type.BaseType = Fix(type.BaseType);
// interfaces before methods, because methods will have to go through them
foreach (InterfaceImplementation nested in type.Interfaces)
{
nested.InterfaceType = Fix(nested.InterfaceType);
FixReferences(nested.CustomAttributes);
}
// nested types first
foreach (TypeDefinition nested in type.NestedTypes)
FixReferences(nested);
foreach (FieldDefinition field in type.Fields)
FixReferences(field);
foreach (MethodDefinition meth in type.Methods)
FixReferences(meth);
foreach (EventDefinition evt in type.Events)
FixReferences(evt);
foreach (PropertyDefinition prop in type.Properties)
FixReferences(prop);
FixReferences(type.SecurityDeclarations);
FixReferences(type.CustomAttributes);
}