PostSharpAPI ReferencePost­Sharp.​ReflectionCustom­Reflection­BinderBind­To­Method
Open sandboxFocus

Method BindToMethod

BindToMethod(BindingFlags, MethodBase[], ref Object[], ParameterModifier[], CultureInfo, String[], out Object)

Selects a method to invoke from the given set of methods, based on the supplied arguments.

Declaration
public override MethodBase BindToMethod(BindingFlags bindingFlags, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] names, out object state)
Parameters
Type Name Description
BindingFlags bindingFlags
MethodBase[] match

The set of methods that are candidates for matching. For example, when a Binder object is used by InvokeMember, this parameter specifies the set of methods that reflection has determined to be possible matches, typically because they have the correct member name. The default implementation provided by DefaultBinder changes the order of this array.

Object[] args

The arguments that are passed in. The binder can change the order of the arguments in this array; for example, the default binder changes the order of arguments if the names parameter is used to specify an order other than positional order. If a binder implementation coerces argument types, the types and values of the arguments can be changed as well.

ParameterModifier[] modifiers

An array of parameter modifiers that enable binding to work with parameter signatures in which the types have been modified. The default binder implementation does not use this parameter.

CultureInfo culture

An instance of CultureInfo that is used to control the coercion of data types, in binder implementations that coerce types. If culture is null, the CultureInfo for the current thread is used.
Note For example, if a binder implementation allows coercion of string values to numeric types, this parameter is necessary to convert a langword_csharp_String that represents 1000 to a langword_csharp_Double value, because 1000 is represented differently by different cultures. The default binder does not do such string coercions.

String[] names

The parameter names, if parameter names are to be considered when matching, or null if arguments are to be treated as purely positional. For example, parameter names must be used if arguments are not supplied in positional order.

Object state

After the method returns, state contains a binder-provided object that keeps track of argument reordering. The binder creates this object, and the binder is the sole consumer of this object. If state is not null when langword_csharp_BindToMethod returns, you must pass state to the ReorderArgumentArray(Object[], Object) method if you want to restore args to its original order, for example, so that you can retrieve the values of langword_csharp_ref parameters (langword_csharp_ByRef parameters in Visual Basic).

Returns
Type Description
MethodBase

The matching method.

Exceptions
Type Condition
AmbiguousMatchException

For the default binder, match contains multiple methods that are equally good matches for args. For example, args contains a MyClass object that implements the IMyClass interface, and match contains a method that takes MyClass and a method that takes IMyClass.

MissingMethodException

For the default binder, match contains no methods that can accept the arguments supplied in args.

ArgumentException

For the default binder, match is null or an empty array.