1 // ==++==
2 //
3 //   Copyright (c) Microsoft Corporation.  All rights reserved.
4 //
5 // ==--==
6 ////////////////////////////////////////////////////////////////////////////////
7 ////////////////////////////////////////////////////////////////////////////////
8 //
9 // BindingFlags are a set of flags that control the binding and invocation process
10 //
11 // <OWNER>WESU</OWNER>
12 //    in Reflection.  There are two processes.  The first is selection of a Member which
13 //    is the binding phase.  The second, is invocation.  These flags control how this
14 //    process works.
15 //
16 // <EMAIL>Author: darylo</EMAIL>
17 // Date: June 99
18 //
19 namespace System.Reflection {
20 
21     using System;
22     [Serializable]
23     [Flags]
24     [System.Runtime.InteropServices.ComVisible(true)]
25     public enum BindingFlags
26     {
27 
28         // NOTES: We have lookup masks defined in RuntimeType and Activator.  If we
29         //    change the lookup values then these masks may need to change also.
30 
31         // a place holder for no flag specifed
32         Default             = 0x00,
33 
34         // These flags indicate what to search for when binding
35         IgnoreCase          = 0x01,        // Ignore the case of Names while searching
36         DeclaredOnly        = 0x02,        // Only look at the members declared on the Type
37         Instance            = 0x04,        // Include Instance members in search
38         Static              = 0x08,        // Include Static members in search
39         Public              = 0x10,        // Include Public members in search
40         NonPublic           = 0x20,        // Include Non-Public members in search
41         FlattenHierarchy    = 0x40,        // Rollup the statics into the class.
42 
43         // These flags are used by InvokeMember to determine
44         // what type of member we are trying to Invoke.
45         // BindingAccess = 0xFF00;
46         InvokeMethod        = 0x0100,
47         CreateInstance      = 0x0200,
48         GetField            = 0x0400,
49         SetField            = 0x0800,
50         GetProperty         = 0x1000,
51         SetProperty         = 0x2000,
52 
53         // These flags are also used by InvokeMember but they should only
54         // be used when calling InvokeMember on a COM object.
55         PutDispProperty     = 0x4000,
56         PutRefDispProperty  = 0x8000,
57 
58         ExactBinding        = 0x010000,        // Bind with Exact Type matching, No Change type
59         SuppressChangeType  = 0x020000,
60 
61         // DefaultValueBinding will return the set of methods having ArgCount or
62         //    more parameters.  This is used for default values, etc.
63         OptionalParamBinding        = 0x040000,
64 
65         // These are a couple of misc attributes used
66         IgnoreReturn        = 0x01000000,    // This is used in COM Interop
67     }
68 }
69