1 // ==++==
2 //
3 //   Copyright (c) Microsoft Corporation.  All rights reserved.
4 //
5 // ==--==
6 // <OWNER>WESU</OWNER>
7 namespace System.Reflection
8 {
9     using System;
10     // This Enum matchs the CorFieldAttr defined in CorHdr.h
11     [Serializable]
12     [Flags()]
13     [System.Runtime.InteropServices.ComVisible(true)]
14     public enum FieldAttributes
15     {
16         // member access mask - Use this mask to retrieve accessibility information.
17         FieldAccessMask         =    0x0007,
18         PrivateScope            =    0x0000,    // Member not referenceable.
19         Private                 =    0x0001,    // Accessible only by the parent type.
20         FamANDAssem             =    0x0002,    // Accessible by sub-types only in this Assembly.
21         Assembly                =    0x0003,    // Accessibly by anyone in the Assembly.
22         Family                  =    0x0004,    // Accessible only by type and sub-types.
23         FamORAssem              =    0x0005,    // Accessibly by sub-types anywhere, plus anyone in assembly.
24         Public                  =    0x0006,    // Accessibly by anyone who has visibility to this scope.
25         // end member access mask
26 
27         // field contract attributes.
28         Static                  =    0x0010,        // Defined on type, else per instance.
29         InitOnly                =    0x0020,     // Field may only be initialized, not written to after init.
30         Literal                 =    0x0040,        // Value is compile time constant.
31         NotSerialized           =    0x0080,        // Field does not have to be serialized when type is remoted.
32 
33         SpecialName             =    0x0200,     // field is special.  Name describes how.
34 
35         // interop attributes
36         PinvokeImpl             =    0x2000,        // Implementation is forwarded through pinvoke.
37 
38         // Reserved flags for runtime use only.
39         ReservedMask            =   0x9500,
40         RTSpecialName           =   0x0400,     // Runtime(metadata internal APIs) should check name encoding.
41         HasFieldMarshal         =   0x1000,     // Field has marshalling information.
42         HasDefault              =   0x8000,     // Field has default.
43         HasFieldRVA             =   0x0100,     // Field has RVA.
44     }
45 }
46