Fields

CreateInstance

512

Specifies that reflection should create an instance of the specified type. Calls the constructor that matches the given arguments. The supplied member name is ignored. If the type of lookup is not specified, (Instance | Public) will apply. It is not possible to call a type initializer.

This flag is passed to an InvokeMember method to invoke a constructor.

DeclaredOnly

2

Specifies that only members declared at the level of the supplied type's hierarchy should be considered. Inherited members are not considered.

Default

0

Specifies that no binding flags are defined.

DoNotWrapExceptions

33554432

ExactBinding

65536

Specifies that types of the supplied arguments must exactly match the types of the corresponding formal parameters. Reflection throws an exception if the caller supplies a non-null Binder object, since that implies that the caller is supplying BindToXXX implementations that will pick the appropriate method. The default binder ignores this flag, while custom binders can implement the semantics of this flag.

FlattenHierarchy

64

Specifies that public and protected static members up the hierarchy should be returned. Private static members in inherited classes are not returned. Static members include fields, methods, events, and properties. Nested types are not returned.

GetField

1024

Specifies that the value of the specified field should be returned.

This flag is passed to an InvokeMember method to get a field value.

GetProperty

4096

Specifies that the value of the specified property should be returned.

This flag is passed to an InvokeMember method to invoke a property getter.

IgnoreCase

1

Specifies that the case of the member name should not be considered when binding.

IgnoreReturn

16777216

Used in COM interop to specify that the return value of the member can be ignored.

Instance

4

Specifies that instance members are to be included in the search.

InvokeMethod

256

Specifies that a method is to be invoked. This must not be a constructor or a type initializer.

Parameters with default values are used only in calls where trailing arguments are omitted. They must be the last arguments.

Public

16

Specifies that public members are to be included in the search.

PutDispProperty

16384

Specifies that the PROPPUT member on a COM object should be invoked. PROPPUT specifies a property-setting function that uses a value. Use PutDispProperty if a property has both PROPPUT and PROPPUTREF and you need to distinguish which one is called.

PutRefDispProperty

32768

Specifies that the PROPPUTREF member on a COM object should be invoked. PROPPUTREF specifies a property-setting function that uses a reference instead of a value. Use PutRefDispProperty if a property has both PROPPUT and PROPPUTREF and you need to distinguish which one is called.

SetField

2048

Specifies that the value of the specified field should be set.

This flag is passed to an InvokeMember method to set a field value.

SetProperty

8192

Specifies that the value of the specified property should be set. For COM properties, specifying this binding flag is equivalent to specifying PutDispProperty and PutRefDispProperty.

This flag is passed to an InvokeMember method to invoke a property setter.

The binding flags can be categorized by how they identify a type member, as listed in the following table.

Identified by Accessibility

Identified by Binding Argument

Identified by Operation

DeclaredOnly

FlattenHierarchy

IgnoreCase

IgnoreReturn

Instance

NonPublic

Public

Static

ExactBinding

OptionalParamBinding

CreateInstance

GetField

SetField

GetProperty

SetProperty

InvokeMethod

PutDispProperty

PutRefDispProperty

Note

You must specify Instance or Static along with Public or NonPublic or no members will be returned.

The following table lists the coercions performed by the default Binder.ChangeType. This table applies especially to the BindingFlags.ExactBinding binding flag. The general principle is that ChangeType should perform only widening coercions, which never lose data. An example of a widening coercion is coercing a value that is a 32-bit signed integer to a value that is a 64-bit signed integer. This is distinguished from a narrowing coercion, which may lose data. An example of a narrowing coercion is coercing a 64-bit signed integer to a 32-bit signed integer.

Source Type

Target Type

Any type

Its base type.

Any type

The interface it implements.

Char

UInt16, UInt32, Int32, UInt64, Int64, Single, Double

Byte

Char, UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double

SByte

Int16, Int32, Int64, Single, Double

UInt16

UInt32, Int32, UInt64, Int64, Single, Double

Int16

Int32, Int64, Single, Double

UInt32

UInt64, Int64, Single, Double

Int32

Int64, Single, Double

UInt64

Single, Double

Int64

Single, Double

Single

Double

Non-reference

By-reference.

When the BindingFlags.ExactBinding binding flag is used, reflection models the accessibility rules of the common type system. For example, if the caller is in the same assembly, the caller does not need special permissions for internal members. Otherwise, the caller needs ReflectionPermission. This is consistent with the lookup of members that are protected, private, and so on.