private void InitData()

in src/Microsoft.Diagnostics.Runtime/ClrField.cs [102:135]


        private void InitData(bool forName)
        {
            if (!forName && _attributes != (int)FieldAttributes.ReservedMask)
                return;

            IAbstractMetadataReader? import = ContainingType.Module.MetadataReader;
            if (import is null || !import.GetFieldDefInfo(Token, out FieldDefInfo info))
            {
                _attributes = 0;
                return;
            }

            StringCaching options = ContainingType.Heap.Runtime.DataTarget.CacheOptions.CacheFieldNames;
            if (info.Name != null)
            {
                if (options == StringCaching.Intern)
                    info.Name = string.Intern(info.Name);

                if (options != StringCaching.None)
                    _name = info.Name;
            }

            if (_type is null)
            {
                SigParser sigParser = new(info.Signature, info.SignatureSize);
                if (sigParser.GetCallingConvInfo(out int sigType) && sigType == SigParser.IMAGE_CEE_CS_CALLCONV_FIELD)
                {
                    sigParser.SkipCustomModifiers();
                    _type = ContainingType.Heap.GetOrCreateTypeFromSignature(ContainingType.Module, sigParser, ContainingType.EnumerateGenericParameters(), Array.Empty<ClrGenericParameter>());
                }
            }

            Interlocked.Exchange(ref _attributes, (int)info.Attributes);
        }