public override void Visit(IFieldReference fieldReference) { if (!alreadySeen.Add(fieldReference)) { return; } IUnitReference definingUnit = MetadataWriter.GetDefiningUnitReference(fieldReference.GetContainingType(Context), Context); if (definingUnit != null && ReferenceEquals(definingUnit, this.module)) { return; } this.Visit((ITypeMemberReference)fieldReference); this.Visit(fieldReference.GetType(Context)); ReserveFieldToken(fieldReference); }
private static void VisitFieldReference(IFieldReference fieldReference, EmitContext context) { Debug.Assert(fieldReference != null); // Visit containing type VisitTypeReference(fieldReference.GetContainingType(context), context); // Translate substituted field to original definition ISpecializedFieldReference specializedField = fieldReference.AsSpecializedFieldReference; if (specializedField != null) { fieldReference = specializedField.UnspecializedVersion; } // Visit field type VisitTypeReference(fieldReference.GetType(context), context); }