我记得在某个地方阅读,当使用反射和GetMethod
的重载接受BindingFlags
的位掩码时,BindingFlags.Default
等同于BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance
或其他东西。谁能告诉我BindingFlags.Default
中特别包含哪些值? MSDN documentation没有说,我无法在任何地方找到答案。
答案 0 :(得分:10)
如果您在其上“定义”,您会看到:
public enum BindingFlags
{
// Summary:
// Specifies no binding flag.
Default = 0,
//
// Summary:
// Specifies that the case of the member name should not be considered when
// binding.
IgnoreCase = 1,
//
// Summary:
// Specifies that only members declared at the level of the supplied type's
// hierarchy should be considered. Inherited members are not considered.
DeclaredOnly = 2,
//
// Summary:
// Specifies that instance members are to be included in the search.
Instance = 4,
//
// Summary:
// Specifies that static members are to be included in the search.
Static = 8,
//
// Summary:
// Specifies that public members are to be included in the search.
Public = 16,
//
// Summary:
// Specifies that non-public members are to be included in the search.
NonPublic = 32,
//
// Summary:
// 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.
FlattenHierarchy = 64,
//
// Summary:
// Specifies that a method is to be invoked. This must not be a constructor
// or a type initializer.
InvokeMethod = 256,
//
// Summary:
// 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.
CreateInstance = 512,
//
// Summary:
// Specifies that the value of the specified field should be returned.
GetField = 1024,
//
// Summary:
// Specifies that the value of the specified field should be set.
SetField = 2048,
//
// Summary:
// Specifies that the value of the specified property should be returned.
GetProperty = 4096,
//
// Summary:
// 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.
SetProperty = 8192,
//
// Summary:
// 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.
PutDispProperty = 16384,
//
// Summary:
// 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.
PutRefDispProperty = 32768,
//
// Summary:
// 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.
ExactBinding = 65536,
//
// Summary:
// Not implemented.
SuppressChangeType = 131072,
//
// Summary:
// Returns the set of members whose parameter count matches the number of supplied
// arguments. This binding flag is used for methods with parameters that have
// default values and methods with variable arguments (varargs). This flag should
// only be used with System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]).
OptionalParamBinding = 262144,
//
// Summary:
// Used in COM interop to specify that the return value of the member can be
// ignored.
IgnoreReturn = 16777216,
}
所以,它看起来像BindingFlags.Default != BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance
。
答案 1 :(得分:3)
BindingFlags.Default指定没有绑定标志。枚举的用户可以选择要执行的操作。 System.Type.GetMethods()例如返回所有公共方法。