gpt4 book ai didi

c# - BindingFlags.Default 等同于什么?

转载 作者:可可西里 更新时间:2023-11-01 08:09:09 35 4
gpt4 key购买 nike

我记得在某处读过,当使用反射和接受 BindingFlags 位掩码的 GetMethod 重载时,BindingFlags.Default 是等效的到 BindingFlags.Public | BindingFlags.静态 | BindingFlags.Instance 之类的。谁能告诉我 BindingFlags.Default 中具体包含哪些值? MSDN documentation不说,而且我在任何地方都找不到答案。

最佳答案

如果你“去定义”它,你会看到:

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.静态 | BindingFlags.Instance.

关于c# - BindingFlags.Default 等同于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894583/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com