Пример #1
0
        public IEnumerable <IAttribute> GetAttributes()
        {
            var b        = new AttributeListBuilder(module);
            var metadata = module.metadata;
            var fieldDef = metadata.GetFieldDefinition(handle);

            // FieldOffsetAttribute
            int offset = fieldDef.GetOffset();

            if (offset != -1)
            {
                b.Add(KnownAttribute.FieldOffset, KnownTypeCode.Int32, offset);
            }

            // NonSerializedAttribute
            if ((fieldDef.Attributes & FieldAttributes.NotSerialized) != 0)
            {
                b.Add(KnownAttribute.NonSerialized);
            }

            b.AddMarshalInfo(fieldDef.GetMarshallingDescriptor());
            b.Add(fieldDef.GetCustomAttributes(), SymbolKind.Field);

            return(b.Build());
        }
Пример #2
0
        public IEnumerable <IAttribute> GetAttributes()
        {
            var b         = new AttributeListBuilder(module);
            var metadata  = module.metadata;
            var parameter = metadata.GetParameter(handle);

            if (IsOptional && !HasConstantValueInSignature)
            {
                b.Add(KnownAttribute.Optional);
            }

            if (!IsOut && !IsIn)
            {
                if ((attributes & ParameterAttributes.In) == ParameterAttributes.In)
                {
                    b.Add(KnownAttribute.In);
                }
                if ((attributes & ParameterAttributes.Out) == ParameterAttributes.Out)
                {
                    b.Add(KnownAttribute.Out);
                }
            }
            b.Add(parameter.GetCustomAttributes(), SymbolKind.Parameter);
            b.AddMarshalInfo(parameter.GetMarshallingDescriptor());

            return(b.Build());
        }
Пример #3
0
        public IEnumerable <IAttribute> GetReturnTypeAttributes()
        {
            var b                = new AttributeListBuilder(module);
            var metadata         = module.metadata;
            var methodDefinition = metadata.GetMethodDefinition(handle);
            var parameters       = methodDefinition.GetParameters();

            if (parameters.Count > 0)
            {
                var retParam = metadata.GetParameter(parameters.First());
                if (retParam.SequenceNumber == 0)
                {
                    b.AddMarshalInfo(retParam.GetMarshallingDescriptor());
                    b.Add(retParam.GetCustomAttributes(), symbolKind);
                }
            }
            return(b.Build());
        }