Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CilRuntimeField"/> class.
 /// </summary>
 /// <param name="module">The module.</param>
 /// <param name="name">The name.</param>
 /// <param name="signature">The signature.</param>
 /// <param name="token">The token.</param>
 /// <param name="offset">The offset.</param>
 /// <param name="rva">The rva.</param>
 /// <param name="declaringType">Type of the declaring.</param>
 /// <param name="attributes">The attributes.</param>
 public CilRuntimeField(ITypeModule module, string name, FieldSignature signature, Token token, uint offset, uint rva, RuntimeType declaringType, FieldAttributes attributes)
     : base(module, token, declaringType)
 {
     this.Name = name;
     this.Signature = signature;
     base.Attributes = attributes;
     base.RVA = rva;
 }
Exemplo n.º 2
0
        public CilRuntimeField(IModuleTypeSystem moduleTypeSystem, RuntimeField genericField, FieldSignature signature)
            : base(moduleTypeSystem, genericField.DeclaringType)
        {
            this.Name = genericField.Name;
            this.Attributes = genericField.Attributes;
            this.RVA = genericField.RVA;
            this.Signature = signature;

            this.SetAttributes(genericField.CustomAttributes);
        }
Exemplo n.º 3
0
        public CilRuntimeField(RuntimeField genericField, IMetadataModule module, FieldSignature signature)
            : base(module, genericField.DeclaringType)
        {
            this.Name = genericField.Name;
            this.Attributes = genericField.Attributes;
            this.RVA = genericField.RVA;
            this.Signature = signature;

            this.SetAttributes(genericField.CustomAttributes);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CilGenericField"/> class.
        /// </summary>
        /// <param name="module">The module.</param>
        /// <param name="genericField">The generic field.</param>
        /// <param name="signature">The signature.</param>
        /// <param name="declaringType">Type of the declaring.</param>
        public CilGenericField(ITypeModule module, RuntimeField genericField, FieldSignature signature, CilGenericType declaringType)
            : base(module, declaringType)
        {
            this.Signature = signature;
            this.Attributes = genericField.Attributes;
            //TODO
            //this.SetAttributes(genericField.CustomAttributes);

            base.Name = genericField.Name;
        }
Exemplo n.º 5
0
        public CilGenericField(IModuleTypeSystem moduleTypeSystem, RuntimeField genericField, FieldSignature signature, CilGenericType declaringType)
            : base(moduleTypeSystem, declaringType)
        {
            this.Signature = signature;
            this.genericField = genericField;
            this.Attributes = genericField.Attributes;
            this.SetAttributes(genericField.CustomAttributes);

            return;
        }
Exemplo n.º 6
0
        public CilGenericField(RuntimeType declaringType, RuntimeField genericField, FieldSignature signature)
            : base(declaringType.Module, declaringType)
        {
            this.genericField = genericField;
            this.Signature = signature;

            // FIXME: RVA, Address of these?
            this.Attributes = genericField.Attributes;
            this.SetAttributes(genericField.CustomAttributes);
        }
Exemplo n.º 7
0
        public override IEnumerable GetValues()
        {
            yield return TokenString("Name", row.Name);
            yield return Value("NameStringIdx", row.Name);
            yield return Value("Flags", row.Flags.ToString());
            yield return Value("SignatureBlobIdx", row.Signature);

            FieldSignature signature = new FieldSignature(Metadata, row.Signature);
            yield return Value("Signature Token", signature.Token);
            yield return Value("Signature Modifier", signature.Modifier.ToString());
            yield return Value("Signature Type", signature.Type.ToString());
        }
Exemplo n.º 8
0
        /// <summary>
        /// Froms the member ref signature token.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="token">The token.</param>
        /// <returns></returns>
        public static Signature FromMemberRefSignatureToken(ISignatureContext context, IMetadataProvider provider, TokenTypes token)
        {
            Signature result;
            int index = 0;
            byte[] buffer;
            provider.Read(token, out buffer);

            if (0x06 == buffer[0])
            {
                result = new FieldSignature();
                result.ParseSignature(context, buffer, ref index);
            }
            else
            {
                result = new MethodSignature();
                result.ParseSignature(context, buffer, ref index);
            }
            Debug.Assert(index == buffer.Length, @"Not all signature bytes read.");
            return result;
        }
Exemplo n.º 9
0
        /// <summary>
        /// Froms the member ref signature token.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="token">The token.</param>
        /// <returns></returns>
        public static Signature FromMemberRefSignatureToken(IMetadataProvider provider, TokenTypes token)
        {
            Signature result;
            int       index = 0;

            byte[] buffer;
            provider.Read(token, out buffer);

            if (0x6 == buffer[0])
            {
                result = new FieldSignature();
                result.ParseSignature(buffer, ref index);
            }
            else
            {
                result = new MethodSignature(token);
                result.ParseSignature(buffer, ref index);
            }
            Debug.Assert(index == buffer.Length, "Not all signature bytes read.");
            return(result);
        }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FieldSignature"/> class.
 /// </summary>
 /// <param name="signature">The signature.</param>
 /// <param name="genericArguments">The generic arguments.</param>
 public FieldSignature(FieldSignature signature, SigType[] genericArguments)
     : base(signature)
 {
     ApplyGenericArguments(genericArguments);
 }
Exemplo n.º 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FieldSignature"/> class.
 /// </summary>
 /// <param name="signature">The signature.</param>
 public FieldSignature(FieldSignature signature)
     : base(signature)
 {
 }
Exemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FieldSignature"/> class.
 /// </summary>
 /// <param name="signature">The signature.</param>
 /// <param name="genericArguments">The generic arguments.</param>
 public FieldSignature(FieldSignature signature, SigType[] genericArguments)
     : base(signature)
 {
     ApplyGenericArguments(genericArguments);
 }
Exemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FieldSignature"/> class.
 /// </summary>
 /// <param name="signature">The signature.</param>
 public FieldSignature(FieldSignature signature)
     : base(signature)
 {
 }
Exemplo n.º 14
0
 /// <summary>
 /// Gets the type of the field.
 /// </summary>
 /// <returns>The type of the field.</returns>
 protected override SigType GetFieldType()
 {
     FieldSignature fsig = new FieldSignature ();
     fsig.LoadSignature (this.Module.Metadata, this.signature);
     return fsig.Type;
 }
Exemplo n.º 15
0
 /// <summary>
 /// Gets the type of the field.
 /// </summary>
 /// <returns>The type of the field.</returns>
 protected override FieldSignature GetSignature()
 {
     FieldSignature fsig = new FieldSignature();
     fsig.LoadSignature(this.DeclaringType, this.Module.Metadata, this.signature);
     return fsig;
 }
Exemplo n.º 16
0
        private IList<RuntimeField> GetFields()
        {
            this.ProcessSignature();

            List<RuntimeField> fields = new List<RuntimeField>();
            foreach (CilRuntimeField field in this.genericType.Fields)
            {
                FieldSignature fsig = new FieldSignature();
                    fsig.LoadSignature(this, this.genericType.Module.Metadata, field.Signature.Token);

                CilGenericField genericInstanceField = new CilGenericField(this, field, fsig);
                fields.Add(genericInstanceField);
            }

            return fields;
        }
Exemplo n.º 17
0
        private void ResolveFields()
        {
            foreach (CilRuntimeField field in baseGenericType.Fields)
            {
                FieldSignature signature = new FieldSignature(field.Signature, genericArguments);

                CilGenericField genericInstanceField = new CilGenericField(Module, field, signature, this);
                Fields.Add(genericInstanceField);
            }
        }
Exemplo n.º 18
0
        private IList<RuntimeField> GetFields()
        {
            List<RuntimeField> fields = new List<RuntimeField>();
            foreach (CilRuntimeField field in this.genericType.Fields)
            {
                FieldSignature signature = new FieldSignature(field.MetadataModule.Metadata, field.Signature.Token);

                signature.ApplyGenericType(this.genericArguments);

                CilGenericField genericInstanceField = new CilGenericField(moduleTypeSystem, field, signature, this);

                fields.Add(genericInstanceField);
            }

            return fields;
        }