Gets a reference to the default binder, which implements internal rules for selecting the appropriate members to be called by Type.InvokeMember(string, System.Reflection.BindingFlags, System.Reflection.Binder, object, Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, String[]).
The default System.Reflection.Binder used by the system.
The default binder provided with the common language runtime is applicable in all but the most specialized circumstances. If you need a binder that follows rules that differ from those of the supplied default binder, define a type derived from the System.Reflection.Binder class and pass an instance of that type using the binder parameter of one of the Type.InvokeMember(string, System.Reflection.BindingFlags, System.Reflection.Binder, object, Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, String[]) overloads.
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 System.Security.Permissions.ReflectionPermission. This is consistent with lookup of members that are protected, private, and so on.
The general principle is that System.Reflection.Binder.ChangeType(object, Type, System.Globalization.CultureInfo) should perform only widening conversions, which never lose data. An example of a widening conversion is converting 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 conversion, which may lose data. An example of a narrowing conversion is converting a 64-bit signed integer to a 32-bit signed integer.
The following table lists the conversions supported by the default binder.
Any type |
Its base type. |
Any type |
The interface it implements. |
Char |
Unt16, UInt32, Int32, UInt64, Int64, Single, Double |
Byte |
Char, Unt16, 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. |