Type.InvokeMember Type.InvokeMember Type.InvokeMember Method

定義

現在の Type の特定のメンバーを呼び出します。Invokes a specific member of the current Type.

オーバーロード

InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

派生クラス内でオーバーライドされた場合、指定したバインディング制約を使用し、指定した引数リスト、修飾子、カルチャと照合して、指定されたメンバーを呼び出します。When overridden in a derived class, invokes the specified member, using the specified binding constraints and matching the specified argument list, modifiers and culture.

InvokeMember(String, BindingFlags, Binder, Object, Object[]) InvokeMember(String, BindingFlags, Binder, Object, Object[]) InvokeMember(String, BindingFlags, Binder, Object, Object[])

指定したバインディング制約を使用し、指定した引数リストと照合して、指定したメンバーを呼び出します。Invokes the specified member, using the specified binding constraints and matching the specified argument list.

InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

指定したバインディング制約を使用し、指定したメンバーのうち、指定した引数リストおよびカルチャと一致するメンバーを呼び出します。Invokes the specified member, using the specified binding constraints and matching the specified argument list and culture.

InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

派生クラス内でオーバーライドされた場合、指定したバインディング制約を使用し、指定した引数リスト、修飾子、カルチャと照合して、指定されたメンバーを呼び出します。When overridden in a derived class, invokes the specified member, using the specified binding constraints and matching the specified argument list, modifiers and culture.

public:
 abstract System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);
public abstract object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj

パラメーター

name
String String String

呼び出すコンストラクター、メソッド、プロパティ、またはフィールド メンバーの名前を格納している文字列。The string containing the name of the constructor, method, property, or field member to invoke.

または-or- 既定メンバーを呼び出すための空の文字列 ("")。An empty string ("") to invoke the default member.

または-or- IDispatch メンバーの場合は、"[DispID=3]" のように DispID を表す文字列。For IDispatch members, a string representing the DispID, for example "[DispID=3]".

invokeAttr
BindingFlags BindingFlags BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted. アクセスは、BindingFlagsPublicNonPublicPrivateInvokeMethod など、GetField のうちの 1 つになります。The access can be one of the BindingFlags such as Public, NonPublic, Private, InvokeMethod, GetField, and so on. 検索の種類を指定する必要はありません。The type of lookup need not be specified. 検索の種類が省略されている場合は、BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static を使用します。If the type of lookup is omitted, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static are used.

binder
Binder Binder Binder

一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

または-or- DefaultBinder を使用する場合は、null 参照 (Visual Basic の場合は Nothing)。A null reference (Nothing in Visual Basic), to use the DefaultBinder. 可変個の引数を指定してメソッド オーバーロードを正常に呼び出すには、Binder オブジェクトを明示的に定義することが必要な場合があるのでご注意ください。Note that explicitly defining a Binder object may be required for successfully invoking method overloads with variable arguments.

target
Object Object Object

指定したメンバーを呼び出す対象となるオブジェクト。The object on which to invoke the specified member.

args
Object[]

呼び出すメンバーに渡される引数を格納する配列。An array containing the arguments to pass to the member to invoke.

modifiers
ParameterModifier[]

args 配列内の対応する要素に関連付けられている属性を表す ParameterModifier オブジェクトの配列。An array of ParameterModifier objects representing the attributes associated with the corresponding element in the args array. パラメーターに関連付けられた属性は、メンバーのシグネチャに格納されます。A parameter's associated attributes are stored in the member's signature.

既定のバインダーは、COM コンポーネントを呼び出す場合のみ、このパラメーターを処理します。The default binder processes this parameter only when calling a COM component.

culture
CultureInfo CultureInfo CultureInfo

使用するロケールを表す CultureInfo オブジェクト。これは、String 型の数値を Double に変換するなど、ロケール固有の変換を実行するために必要となる場合があります。The CultureInfo object representing the globalization locale to use, which may be necessary for locale-specific conversions, such as converting a numeric String to a Double.

または-or- 現在のスレッドの CultureInfo を使用する場合は、null 参照 (Visual Basic の場合は Nothing)。A null reference (Nothing in Visual Basic) to use the current thread's CultureInfo.

namedParameters
String[]

args 配列内の値が渡されるパラメーターの名前を格納する配列。An array containing the names of the parameters to which the values in the args array are passed.

戻り値

呼び出されるメンバーの戻り値を表すオブジェクト。An object representing the return value of the invoked member.

実装

例外

invokeAttrCreateInstance が含まれず、namenull です。invokeAttr does not contain CreateInstance and name is null.

argsmodifiers の長さが同じではありません。args and modifiers do not have the same length.

または-or- invokeAttr が有効な BindingFlags 属性ではありません。invokeAttr is not a valid BindingFlags attribute.

または-or- invokeAttr にバインド フラグ InvokeMethodCreateInstanceGetFieldSetFieldGetPropertySetProperty のいずれかが含まれていません。invokeAttr does not contain one of the following binding flags: InvokeMethod, CreateInstance, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttr に、CreateInstanceInvokeMethodGetFieldSetFieldGetPropertySetProperty との組み合わせが含まれています。invokeAttr contains CreateInstance combined with InvokeMethod, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttrGetFieldSetField の両方が含まれています。invokeAttr contains both GetField and SetField.

または-or- invokeAttrGetPropertySetProperty の両方が含まれています。invokeAttr contains both GetProperty and SetProperty.

または-or- invokeAttr に、InvokeMethodSetField または SetProperty との組み合わせが含まれています。invokeAttr contains InvokeMethod combined with SetField or SetProperty.

または-or- invokeAttrSetField が含まれており、args に複数の要素があります。invokeAttr contains SetField and args has more than one element.

または-or- 名前付きパラメーター配列が、引数配列よりも長くなっています。The named parameter array is larger than the argument array.

または-or- COM オブジェクトでこのメソッドが呼び出され、バインド フラグ BindingFlags.InvokeMethodBindingFlags.GetPropertyBindingFlags.SetPropertyBindingFlags.PutDispPropertyBindingFlags.PutRefDispProperty のいずれかが渡されませんでした。This method is called on a COM object and one of the following binding flags was not passed in: BindingFlags.InvokeMethod, BindingFlags.GetProperty, BindingFlags.SetProperty, BindingFlags.PutDispProperty, or BindingFlags.PutRefDispProperty.

または-or- 名前付きパラメーター配列の 1 つに、null である文字列が含まれています。One of the named parameter arrays contains a string that is null.

指定されたメンバーは、クラス初期化子です。The specified member is a class initializer.

フィールドまたはプロパティが見つかりません。The field or property cannot be found.

args 内の引数と一致するメソッドが見つかりません。No method can be found that matches the arguments in args.

または-or- namedParameters の中で引数名が指定されているメンバーが見つかりません。No member can be found that has the argument names supplied in namedParameters.

または-or- 現在の Type オブジェクトは、オープン型のパラメーターを含む型を表します。つまり、ContainsGenericParameterstrue を返します。The current Type object represents a type that contains open type parameters, that is, ContainsGenericParameters returns true.

指定されたメンバーを target で呼び出すことができません。The specified member cannot be invoked on target.

複数のメソッドがバインディングの基準と一致します。More than one method matches the binding criteria.

name によって表されるメソッドに、1 つ以上の未指定のジェネリック型パラメーターがあります。The method represented by name has one or more unspecified generic type parameters. つまり、このメソッドの ContainsGenericParameters プロパティが true を返します。That is, the method's ContainsGenericParameters property returns true.

注釈

InvokeMember コンス トラクター メンバー、またはメソッド メンバーの呼び出し、取得またはプロパティ メンバーを設定、取得またはデータ フィールドのメンバーを設定または取得または設定配列メンバーの要素。InvokeMember calls a constructor member or a method member, gets or sets a property member, gets or sets a data field member, or gets or sets an element of an array member.

注意

使用することはできませんInvokeMemberジェネリック メソッドを呼び出します。You cannot use InvokeMember to invoke a generic method.

呼び出した場合、IDispatchメンバーの文字列形式を使用して、メンバー名の代わりに DispID を指定する"[DispID = ##]"。When you invoke an IDispatch member you can specify the DispID instead of the member name, using the string format "[DispID=##]". たとえば、MyComMethod の DispID が 3 の場合は、文字列を指定できます"[DispID = 3]""MyComMethod"の代わりにします。For example, if the DispID of MyComMethod is 3, you can specify the string "[DispID=3]" instead of "MyComMethod". メンバーの DispID を呼び出すことは、名前で、メンバーを調べるよりも高速です。Invoking a member by DispID is faster than looking up the member by name. 複雑な集計のシナリオで、DispID は必要なメンバーを呼び出すための唯一の方法でがあります。In complex aggregation scenarios, the DispID is sometimes the only way to invoke the desired member.

既定のバインダーでは処理されませんがParameterModifierまたはCultureInfo(、modifierscultureパラメーター)、抽象を使用するSystem.Reflection.Binderカスタム バインダーでは処理を書き込むクラスmodifiersculture.Although the default binder does not process ParameterModifier or CultureInfo (the modifiers and culture parameters), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers and culture. ParameterModifier COM 相互運用機能経由で呼び出す場合にのみ使用され、参照によって渡されるパラメーターのみを処理します。ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

namedParameters 配列の各パラメーターは、args 配列内の対応する要素の値を取得します。Each parameter in the namedParameters array gets the value in the corresponding element in the args array. args の長さが namedParameters の長さより大きい場合、残りの引数の値は順番に渡されます。If the length of args is greater than the length of namedParameters, the remaining argument values are passed in order.

namedParameters配列は、入力配列内の引数の順序を変更するために使用できます。The namedParameters array can be used to change the order of arguments in an input array. たとえば、メソッドを指定M(string a, int b)(M(ByVal a As String, ByVal b As Integer) Visual Basic で) と、入力配列{ 42, "x" }、入力配列にそのまま渡すことができますargs場合、配列{ "b", "a" }が指定されてnamedParametersFor example, given the method M(string a, int b) (M(ByVal a As String, ByVal b As Integer) in Visual Basic) and the input array { 42, "x" }, the input array can be passed unchanged to args if the array { "b", "a" } is supplied for namedParameters.

BindingFlagsフィルター フラグは、検索に含めるメンバーを定義するために使用できます。The following BindingFlags filter flags can be used to define which members to include in the search:

  • 指定BindingFlags.Public検索にパブリック メンバーを含める。Specify BindingFlags.Public to include public members in the search.

  • 指定BindingFlags.NonPublic検索条件に非パブリック メンバー (つまり、プライベート、内部、および保護されたメンバー) を含める。Specify BindingFlags.NonPublic to include non-public members (that is, private, internal, and protected members) in the search.

  • 指定BindingFlags.FlattenHierarchy階層の静的メンバーを含めます。Specify BindingFlags.FlattenHierarchy to include static members up the hierarchy.

BindingFlags修飾フラグは、検索の動作を変更するために使用できます。The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase 大文字と小文字を無視するnameします。BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly 宣言されたメンバーのみを検索する、 Type、継承されたメンバーされません。BindingFlags.DeclaredOnly to search only the members declared on the Type, not members that were simply inherited.

BindingFlags呼び出しフラグは、メンバーを取得するには、どのような操作を示すために使用できます。The following BindingFlags invocation flags can be used to denote what action to take with the member:

  • CreateInstance コンス トラクターを呼び出す。CreateInstance to invoke a constructor. name 無視されます。name is ignored. 他の呼び出しフラグが無効です。Not valid with other invocation flags.

  • InvokeMethod コンス トラクターまたは型の初期化子ではされませんが、メソッドを呼び出す。InvokeMethod to invoke a method, but not a constructor or a type initializer. 無効SetFieldまたはSetPropertyします。Not valid with SetField or SetProperty. 場合InvokeMethod自体で指定されたBindingFlags.PublicBindingFlags.Instance、およびBindingFlags.Staticが自動的に含まれています。If InvokeMethod is specified by itself, BindingFlags.Public, BindingFlags.Instance, and BindingFlags.Static are automatically included.

  • GetField フィールドの値を取得します。GetField to get the value of a field. 無効SetFieldします。Not valid with SetField.

  • SetField フィールドの値を設定します。SetField to set the value of a field. 無効GetFieldします。Not valid with GetField.

  • GetProperty プロパティを取得します。GetProperty to get a property. 無効SetPropertyします。Not valid with SetProperty.

  • SetProperty プロパティを設定します。SetProperty to set a property. 無効GetPropertyします。Not valid with GetProperty.

詳細については、「System.Reflection.BindingFlags」を参照してください。See System.Reflection.BindingFlags for more information.

次の条件の両方に該当する場合、メソッドが呼び出されます。A method will be invoked if both of the following conditions are true:

  • メソッド宣言パラメーターの数の引数の数に等しい、args配列 (既定の引数がメンバーに定義されていない場合とBindingFlags.OptionalParamBindingを指定)。The number of parameters in the method declaration equals the number of arguments in the args array (unless default arguments are defined on the member and BindingFlags.OptionalParamBinding is specified).

  • 各引数の型は、バインダーによってパラメーターの型に変換できます。The type of each argument can be converted by the binder to the type of the parameter.

バインダーは、すべての一致するメソッドに紹介します。The binder will find all of the matching methods. 要求されたバインドの種類に基づいてこれらのメソッドが検出された (BindingFlagsInvokeMethodGetPropertyなど)。These methods are found based upon the type of binding requested (BindingFlags values InvokeMethod, GetProperty, and so on). メソッドのセットは、名前、引数の数とバインダーで定義されている検索修飾子のセットによってフィルター処理されます。The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder.

メソッドを選択した後に呼び出されます。After the method is selected, it is invoked. ユーザー補助機能は、その時点でチェックされます。Accessibility is checked at that point. 検索では、メソッドに関連付けられているユーザー補助属性に基づいて、メソッドのセットを検索するかを制御できます。The search may control which set of methods are searched based upon the accessibility attribute associated with the method. Binder.BindToMethodのメソッド、Binderクラスが呼び出されるメソッドを選択する責任を負います。The Binder.BindToMethod method of the Binder class is responsible for selecting the method to be invoked. 既定のバインダーでは、最も具体的な一致を選択します。The default binder selects the most specific match.

InvokeMember 既定値を持つパラメーターを持つメソッドを呼び出すために使用できます。InvokeMember can be used to invoke methods with parameters that have default values. リフレクションではこれらのメソッドにバインドする、BindingFlags.OptionalParamBindingを指定します。To bind to these methods, Reflection requires BindingFlags.OptionalParamBinding to be specified. 既定値を持つパラメーターの場合、別の値を指定するかを指定Missing.Value既定値を使用します。For a parameter that has a default value, you can either supply a different value, or supply Missing.Value to use the default value.

たとえば、MyMethod などのメソッド (x, y の float int 2.0 以上)。For example, consider a method such as MyMethod(int x, float y = 2.0). Mymethod (4) として最初の引数だけを持つには、このメソッドを呼び出すには、上記のバインディング フラグのいずれかを渡すし、最初の引数は 4、2 つの引数を渡すとMissing.Valueの 2 番目の引数。To invoke this method with only the first argument as MyMethod(4), pass one of the above binding flags and pass two arguments, namely, 4 for the first argument and Missing.Value for the second argument. 使用しない限りMissing.Valueと省略可能なパラメーターを省略することがない、Invokeメソッド。Unless you use Missing.Value, you may not omit optional parameters with the Invoke method. これを行う必要があります場合を使用して、InvokeMember代わりにします。If you must do so, use InvokeMember instead.

完全に信頼されたコードのアクセス制限は無視されます。つまり、プライベート コンス トラクター、メソッド、フィールド、およびプロパティにアクセスできを通じて呼び出されるSystem.Reflectionたびに、コードが完全に信頼されました。Access restrictions are ignored for fully trusted code; that is, private constructors, methods, fields, and properties can be accessed and invoked through System.Reflection whenever the code is fully trusted.

使用することができますType.InvokeMemberを指定して、特定の値にフィールドを設定するBindingFlags.SetFieldします。You can use Type.InvokeMember to set a field to a particular value by specifying BindingFlags.SetField. たとえば、クラス C、および F と F をという名前のパブリック インスタンス フィールドを設定する場合は、Stringなどのコードを使用することができます。For example, if you want to set a public instance field named F on class C, and F is a String, you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"}, null, null, null);

F がある場合、String[]などのコードを使用することができます。If F is a String[], you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}}, null, null, null);

この新しい配列にフィールド F が初期化されます。which will initialize the field F to this new array. 使用することもType.InvokeMemberなど、次のコードを使用して、値と、次の値のインデックスを指定することによって、配列内の位置を設定します。You can also use Type.InvokeMember to set a position in an array by supplying the index of the value and then the next value by using code such as the following:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"}, null, null, null);

これにより、文字列"b"に F を保持する配列内の文字列"z"が変更されます。This will change string "z" in the array that F holds to string "b".

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメソッドは、呼び出し元が許可されている場合は、非パブリック メンバーへのアクセスに使用できますReflectionPermissionで、ReflectionPermissionFlag.RestrictedMemberAccessフラグを設定し、許可セットまたはサブセットに非パブリック メンバーの許可セットが、呼び出し元に制限されている場合そのします。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (を参照してくださいリフレクションに関するセキュリティの考慮事項)。(See Security Considerations for Reflection.)

この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

セキュリティ

ReflectionPermission
アクセス許可に関係なく、非パブリック メンバーの次のように設定します。for accessing non-public members regardless of their grant set. 関連付けられた列挙体。 MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
アンマネージ コードを呼び出す。to call unmanaged code. 関連付けられた列挙体。 UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

InvokeMember(String, BindingFlags, Binder, Object, Object[]) InvokeMember(String, BindingFlags, Binder, Object, Object[]) InvokeMember(String, BindingFlags, Binder, Object, Object[])

指定したバインディング制約を使用し、指定した引数リストと照合して、指定したメンバーを呼び出します。Invokes the specified member, using the specified binding constraints and matching the specified argument list.

public:
 virtual System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args);
public object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] -> obj
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] -> obj

パラメーター

name
String String String

呼び出すコンストラクター、メソッド、プロパティ、またはフィールド メンバーの名前を格納している文字列。The string containing the name of the constructor, method, property, or field member to invoke.

または-or- 既定メンバーを呼び出すための空の文字列 ("")。An empty string ("") to invoke the default member.

または-or- IDispatch メンバーの場合は、"[DispID=3]" のように DispID を表す文字列。For IDispatch members, a string representing the DispID, for example "[DispID=3]".

invokeAttr
BindingFlags BindingFlags BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted. アクセスは、BindingFlagsPublicNonPublicPrivateInvokeMethod など、GetField のうちの 1 つになります。The access can be one of the BindingFlags such as Public, NonPublic, Private, InvokeMethod, GetField, and so on. 検索の種類を指定する必要はありません。The type of lookup need not be specified. 検索の種類が省略されている場合は、BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static を使用します。If the type of lookup is omitted, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static are used.

binder
Binder Binder Binder

一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

または-or- Nothing を使用する場合は、null 参照 (Visual Basic の場合は DefaultBinder)。A null reference (Nothing in Visual Basic), to use the DefaultBinder. 可変個の引数を指定してメソッド オーバーロードを正常に呼び出すには、Binder オブジェクトを明示的に定義することが必要な場合があるのでご注意ください。Note that explicitly defining a Binder object may be required for successfully invoking method overloads with variable arguments.

target
Object Object Object

指定したメンバーを呼び出す対象となるオブジェクト。The object on which to invoke the specified member.

args
Object[]

呼び出すメンバーに渡される引数を格納する配列。An array containing the arguments to pass to the member to invoke.

戻り値

呼び出されるメンバーの戻り値を表すオブジェクト。An object representing the return value of the invoked member.

実装

例外

invokeAttrCreateInstance が含まれず、namenull です。invokeAttr does not contain CreateInstance and name is null.

invokeAttr が有効な BindingFlags 属性ではありません。invokeAttr is not a valid BindingFlags attribute.

または-or- invokeAttr にバインド フラグ InvokeMethodCreateInstanceGetFieldSetFieldGetPropertySetProperty のいずれかが含まれていません。invokeAttr does not contain one of the following binding flags: InvokeMethod, CreateInstance, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttr に、CreateInstanceInvokeMethodGetFieldSetFieldGetPropertySetProperty との組み合わせが含まれています。invokeAttr contains CreateInstance combined with InvokeMethod, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttrGetFieldSetField の両方が含まれています。invokeAttr contains both GetField and SetField.

または-or- invokeAttrGetPropertySetProperty の両方が含まれています。invokeAttr contains both GetProperty and SetProperty.

または-or- invokeAttr に、InvokeMethodSetField または SetProperty との組み合わせが含まれています。invokeAttr contains InvokeMethod combined with SetField or SetProperty.

または-or- invokeAttrSetField が含まれており、args に複数の要素があります。invokeAttr contains SetField and args has more than one element.

または-or- COM オブジェクトでこのメソッドが呼び出され、バインド フラグ BindingFlags.InvokeMethodBindingFlags.GetPropertyBindingFlags.SetPropertyBindingFlags.PutDispPropertyBindingFlags.PutRefDispProperty のいずれかが渡されませんでした。This method is called on a COM object and one of the following binding flags was not passed in: BindingFlags.InvokeMethod, BindingFlags.GetProperty, BindingFlags.SetProperty, BindingFlags.PutDispProperty, or BindingFlags.PutRefDispProperty.

または-or- 名前付きパラメーター配列の 1 つに、null である文字列が含まれています。One of the named parameter arrays contains a string that is null.

指定されたメンバーは、クラス初期化子です。The specified member is a class initializer.

フィールドまたはプロパティが見つかりません。The field or property cannot be found.

args 内の引数と一致するメソッドが見つかりません。No method can be found that matches the arguments in args.

または-or- 現在の Type オブジェクトは、オープン型のパラメーターを含む型を表します。つまり、ContainsGenericParameterstrue を返します。The current Type object represents a type that contains open type parameters, that is, ContainsGenericParameters returns true.

指定されたメンバーを target で呼び出すことができません。The specified member cannot be invoked on target.

複数のメソッドがバインディングの基準と一致します。More than one method matches the binding criteria.

現在、.NET Compact Framework は、このメソッドをサポートしていません。The .NET Compact Framework does not currently support this method.

name によって表されるメソッドに、1 つ以上の未指定のジェネリック型パラメーターがあります。The method represented by name has one or more unspecified generic type parameters. つまり、このメソッドの ContainsGenericParameters プロパティが true を返します。That is, the method's ContainsGenericParameters property returns true.

次の例ではInvokeMember型のメンバーにアクセスします。The following example uses InvokeMember to access members of a type.

using namespace System;
using namespace System::Reflection;

// This sample class has a field, constructor, method, and property.
ref class MyType
{
private:
   Int32 myField;

public:
   MyType( interior_ptr<Int32> x )
   {
       *x *= 5;
   }

   virtual String^ ToString() override
   {
      return myField.ToString();
   }

   property Int32 MyProp 
   {
      Int32 get()
      {
         return myField;
      }

      void set( Int32 value )
      {
         if ( value < 1 )
                  throw gcnew ArgumentOutOfRangeException( "value",value,"value must be > 0" );

         myField = value;
      }
   }
};

int main()
{
   Type^ t = MyType::typeid;

   // Create an instance of a type.
   array<Object^>^args = {8};
   Console::WriteLine( "The value of x before the constructor is called is {0}.", args[ 0 ] );
   Object^ obj = t->InvokeMember( nullptr, static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::CreateInstance), nullptr, nullptr, args );
   Console::WriteLine( "Type: {0}", obj->GetType() );
   Console::WriteLine( "The value of x after the constructor returns is {0}.", args[ 0 ] );

   // Read and write to a field.
   array<Object^>^obj5 = {5};
   t->InvokeMember( "myField", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetField), nullptr, obj, obj5 );
   Int32 v = safe_cast<Int32>(t->InvokeMember( "myField", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::GetField), nullptr, obj, nullptr ));
   Console::WriteLine( "myField: {0}", v );

   // Call a method.
   String^ s = safe_cast<String^>(t->InvokeMember( "ToString", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::InvokeMethod), nullptr, obj, nullptr ));
   Console::WriteLine( "ToString: {0}", s );

   // Read and write a property. First, attempt to assign an
   // invalid value; then assign a valid value; finally, get
   // the value.
   try
   {
      // Assign the value zero to MyProp. The Property Set 
      // throws an exception, because zero is an invalid value.
      // InvokeMember catches the exception, and throws 
      // TargetInvocationException. To discover the real cause
      // you must catch TargetInvocationException and examine
      // the inner exception. 
      array<Object^>^obj0 = {(int^)0};
      t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetProperty), nullptr, obj, obj0 );
   }
   catch ( TargetInvocationException^ e ) 
   {
      // If the property assignment failed for some unexpected
      // reason, rethrow the TargetInvocationException.
      if ( e->InnerException->GetType() != ArgumentOutOfRangeException::typeid )
            throw;

      Console::WriteLine( "An invalid value was assigned to MyProp." );
   }

   array<Object^>^obj2 = {2};
   t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetProperty), nullptr, obj, obj2 );
   v =  safe_cast<Int32>(t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::GetProperty), nullptr, obj, nullptr ));
   Console::WriteLine( "MyProp: {0}", v );
}
using System;
using System.Reflection;

// This sample class has a field, constructor, method, and property.
class MyType 
{
    Int32 myField;
    public MyType(ref Int32 x) {x *= 5;}
    public override String ToString() {return myField.ToString();}
    public Int32 MyProp 
    {
        get {return myField;}
        set 
        { 
            if (value < 1) 
                throw new ArgumentOutOfRangeException("value", value, "value must be > 0");
            myField = value;
        }
    }
}

class MyApp 
{
    static void Main() 
    {
        Type t = typeof(MyType);
        // Create an instance of a type.
        Object[] args = new Object[] {8};
        Console.WriteLine("The value of x before the constructor is called is {0}.", args[0]);
        Object obj = t.InvokeMember(null, 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args);
        Console.WriteLine("Type: " + obj.GetType().ToString());
        Console.WriteLine("The value of x after the constructor returns is {0}.", args[0]);

        // Read and write to a field.
        t.InvokeMember("myField", 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.SetField, null, obj, new Object[] {5});
        Int32 v = (Int32) t.InvokeMember("myField", 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.GetField, null, obj, null);
        Console.WriteLine("myField: " + v);

        // Call a method.
        String s = (String) t.InvokeMember("ToString", 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.InvokeMethod, null, obj, null);
        Console.WriteLine("ToString: " + s);

        // Read and write a property. First, attempt to assign an
        // invalid value; then assign a valid value; finally, get
        // the value.
        try 
        {
            // Assign the value zero to MyProp. The Property Set 
            // throws an exception, because zero is an invalid value.
            // InvokeMember catches the exception, and throws 
            // TargetInvocationException. To discover the real cause
            // you must catch TargetInvocationException and examine
            // the inner exception. 
            t.InvokeMember("MyProp", 
                BindingFlags.DeclaredOnly | 
                BindingFlags.Public | BindingFlags.NonPublic | 
                BindingFlags.Instance | BindingFlags.SetProperty, null, obj, new Object[] {0});
        } 
        catch (TargetInvocationException e) 
        {
            // If the property assignment failed for some unexpected
            // reason, rethrow the TargetInvocationException.
            if (e.InnerException.GetType() != 
                typeof(ArgumentOutOfRangeException)) 
                throw;
            Console.WriteLine("An invalid value was assigned to MyProp.");
        }
        t.InvokeMember("MyProp", 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.SetProperty, null, obj, new Object[] {2});
        v = (Int32) t.InvokeMember("MyProp", 
            BindingFlags.DeclaredOnly | 
            BindingFlags.Public | BindingFlags.NonPublic | 
            BindingFlags.Instance | BindingFlags.GetProperty, null, obj, null);
        Console.WriteLine("MyProp: " + v);
    }
}
Imports System
Imports System.Reflection

' This sample class has a field, constructor, method, and property.
Class MyType
    Private myField As Int32

    Public Sub New(ByRef x As Int32)
        x *= 5
    End Sub 'New

    Public Overrides Function ToString() As [String]
        Return myField.ToString()
    End Function 'ToString

    Public Property MyProp() As Int32
        Get
            Return myField
        End Get
        Set(ByVal Value As Int32)
            If Value < 1 Then
                Throw New ArgumentOutOfRangeException("value", Value, "value must be > 0")
            End If
            myField = Value
        End Set
    End Property
End Class 'MyType

Class MyApp

    Shared Sub Main()
        Dim t As Type = GetType(MyType)
        ' Create an instance of a type.
        Dim args() As [Object] = {8}
        Console.WriteLine("The value of x before the constructor is called is {0}.", args(0))
        Dim obj As [Object] = t.InvokeMember(Nothing, BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.CreateInstance, Nothing, Nothing, args)
        Console.WriteLine("Type: {0}", obj.GetType().ToString())
        Console.WriteLine("The value of x after the constructor returns is {0}.", args(0))

        ' Read and write to a field.
        t.InvokeMember("myField", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetField, Nothing, obj, New [Object]() {5})
        Dim v As Int32 = CType(t.InvokeMember("myField", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.GetField, Nothing, obj, Nothing), Int32)
        Console.WriteLine("myField: {0}", v)

        ' Call a method.
        Dim s As [String] = CType(t.InvokeMember("ToString", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod, Nothing, obj, Nothing), [String])
        Console.WriteLine("ToString: {0}", s)

        ' Read and write a property. First, attempt to assign an
        ' invalid value; then assign a valid value; finally, get
        ' the value.
        Try
            ' Assign the value zero to MyProp. The Property Set 
            ' throws an exception, because zero is an invalid value.
            ' InvokeMember catches the exception, and throws 
            ' TargetInvocationException. To discover the real cause
            ' you must catch TargetInvocationException and examine
            ' the inner exception. 
            t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, Nothing, obj, New [Object]() {0})
        Catch e As TargetInvocationException
            ' If the property assignment failed for some unexpected
            ' reason, rethrow the TargetInvocationException.
            If Not e.InnerException.GetType() Is GetType(ArgumentOutOfRangeException) Then
                Throw
            End If
            Console.WriteLine("An invalid value was assigned to MyProp.")
        End Try
        t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, Nothing, obj, New [Object]() {2})
        v = CType(t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.GetProperty, Nothing, obj, Nothing), Int32)
        Console.WriteLine("MyProp: {0}", v)
    End Sub 'Main
End Class 'MyApp

注釈

注意

使用することはできませんInvokeMemberジェネリック メソッドを呼び出します。You cannot use InvokeMember to invoke a generic method.

BindingFlagsフィルター フラグは、検索に含めるメンバーを定義するために使用できます。The following BindingFlags filter flags can be used to define which members to include in the search:

  • 指定BindingFlags.Public検索にパブリック メンバーを含める。Specify BindingFlags.Public to include public members in the search.

  • 指定BindingFlags.NonPublic検索条件に非パブリック メンバー (つまり、private と protected のメンバー) を含める。Specify BindingFlags.NonPublic to include non-public members (that is, private and protected members) in the search.

  • 指定BindingFlags.FlattenHierarchy階層の静的メンバーを含めます。Specify BindingFlags.FlattenHierarchy to include static members up the hierarchy.

BindingFlags修飾フラグは、検索の動作を変更するために使用できます。The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase 大文字と小文字を無視するnameします。BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly 宣言されたメンバーのみを検索する、 Type、継承されたメンバーされません。BindingFlags.DeclaredOnly to search only the members declared on the Type, not members that were simply inherited.

BindingFlags呼び出しフラグは、メンバーを取得するには、どのような操作を示すために使用できます。The following BindingFlags invocation flags can be used to denote what action to take with the member:

  • CreateInstance コンス トラクターを呼び出す。CreateInstance to invoke a constructor. name 無視されます。name is ignored. 他の呼び出しフラグが無効です。Not valid with other invocation flags.

  • InvokeMethod コンス トラクターまたは型の初期化子ではされませんが、メソッドを呼び出す。InvokeMethod to invoke a method, but not a constructor or a type initializer. 無効SetFieldまたはSetPropertyします。Not valid with SetField or SetProperty. 場合InvokeMethod自体で指定されたBindingFlags.PublicBindingFlags.Instance、およびBindingFlags.Staticが自動的に含まれています。If InvokeMethod is specified by itself, BindingFlags.Public, BindingFlags.Instance, and BindingFlags.Static are automatically included.

  • GetField フィールドの値を取得します。GetField to get the value of a field. 無効SetFieldします。Not valid with SetField.

  • SetField フィールドの値を設定します。SetField to set the value of a field. 無効GetFieldします。Not valid with GetField.

  • GetProperty プロパティを取得します。GetProperty to get a property. 無効SetPropertyします。Not valid with SetProperty.

  • SetProperty プロパティを設定します。SetProperty to set a property. 無効GetPropertyします。Not valid with GetProperty.

詳細については、「System.Reflection.BindingFlags」を参照してください。See System.Reflection.BindingFlags for more information.

次の条件の両方に該当する場合、メソッドが呼び出されます。A method will be invoked if both of the following conditions are true:

  • メソッド宣言パラメーターの数の引数の数に等しい、args配列 (既定の引数がメンバーに定義されていない場合とBindingFlags.OptionalParamBindingを指定)。The number of parameters in the method declaration equals the number of arguments in the args array (unless default arguments are defined on the member and BindingFlags.OptionalParamBinding is specified).

  • 各引数の型は、バインダーによってパラメーターの型に変換できます。The type of each argument can be converted by the binder to the type of the parameter.

バインダーは、すべての一致するメソッドに紹介します。The binder will find all of the matching methods. 要求されたバインドの種類に基づいてこれらのメソッドが検出された (BindingFlagsInvokeMethodGetPropertyなど)。These methods are found based upon the type of binding requested (BindingFlags values InvokeMethod, GetProperty, and so on). メソッドのセットは、名前、引数の数とバインダーで定義されている検索修飾子のセットによってフィルター処理されます。The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder.

メソッドを選択した後に呼び出されます。After the method is selected, it is invoked. ユーザー補助機能は、その時点でチェックされます。Accessibility is checked at that point. 検索では、メソッドに関連付けられているユーザー補助属性に基づいて、メソッドのセットを検索するかを制御できます。The search may control which set of methods are searched based upon the accessibility attribute associated with the method. Binder.BindToMethodのメソッド、Binderクラスが呼び出されるメソッドを選択する責任を負います。The Binder.BindToMethod method of the Binder class is responsible for selecting the method to be invoked. 既定のバインダーでは、最も具体的な一致を選択します。The default binder selects the most specific match.

完全に信頼されたコードのアクセス制限は無視されます。つまり、プライベート コンス トラクター、メソッド、フィールド、およびプロパティにアクセスできを通じて呼び出されるSystem.Reflectionたびに、コードが完全に信頼されました。Access restrictions are ignored for fully trusted code; that is, private constructors, methods, fields, and properties can be accessed and invoked through System.Reflection whenever the code is fully trusted.

使用することができますType.InvokeMemberを指定して、特定の値にフィールドを設定するBindingFlags.SetFieldします。You can use Type.InvokeMember to set a field to a particular value by specifying BindingFlags.SetField. たとえば、クラス C、および F と F をという名前のパブリック インスタンス フィールドを設定する場合は、Stringなどのコードを使用することができます。For example, if you want to set a public instance field named F on class C, and F is a String, you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"});

F がある場合、String[]などのコードを使用することができます。If F is a String[], you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}});

この新しい配列にフィールド F が初期化されます。which will initialize the field F to this new array. 使用することもType.InvokeMemberなど、次のコードを使用して、値と、次の値のインデックスを指定することによって、配列内の位置を設定します。You can also use Type.InvokeMember to set a position in an array by supplying the index of the value and then the next value by using code such as the following:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"});

これにより、文字列"b"に F を保持する配列内の文字列"z"が変更されます。This will change string "z" in the array that F holds to string "b".

呼び出した場合、IDispatchメンバー、文字列形式を使用して、メンバー名の代わりに DispID を指定する"[DispID = ##]"。When you invoke an IDispatch member, you can specify the DispID instead of the member name, using the string format "[DispID=##]". たとえば、MyComMethod の DispID が 3 の場合は、文字列を指定できます"[DispID = 3]""MyComMethod"の代わりにします。For example, if the DispID of MyComMethod is 3, you can specify the string "[DispID=3]" instead of "MyComMethod". メンバーの DispID を呼び出すことは、名前で、メンバーを調べるよりも高速です。Invoking a member by DispID is faster than looking up the member by name. 複雑な集計のシナリオで、DispID は必要なメンバーを呼び出すための唯一の方法でがあります。In complex aggregation scenarios, the DispID is sometimes the only way to invoke the desired member.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメソッドは、呼び出し元が許可されている場合は、非パブリック メンバーへのアクセスに使用できますReflectionPermissionで、ReflectionPermissionFlag.RestrictedMemberAccessフラグを設定し、許可セットまたはサブセットに非パブリック メンバーの許可セットが、呼び出し元に制限されている場合そのします。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (を参照してくださいリフレクションに関するセキュリティの考慮事項)。(See Security Considerations for Reflection.)

この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

セキュリティ

ReflectionPermission
アクセス許可に関係なく、非パブリック メンバーの次のように設定します。for accessing non-public members regardless of their grant set. 関連付けられた列挙体。 MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
アンマネージ コードを呼び出す。to call unmanaged code. 関連付けられた列挙体。 UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

指定したバインディング制約を使用し、指定したメンバーのうち、指定した引数リストおよびカルチャと一致するメンバーを呼び出します。Invokes the specified member, using the specified binding constraints and matching the specified argument list and culture.

public:
 virtual System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture);
public object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Globalization.CultureInfo culture);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Globalization.CultureInfo -> obj
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Globalization.CultureInfo -> obj

パラメーター

name
String String String

呼び出すコンストラクター、メソッド、プロパティ、またはフィールド メンバーの名前を格納している文字列。The string containing the name of the constructor, method, property, or field member to invoke.

または-or- 既定メンバーを呼び出すための空の文字列 ("")。An empty string ("") to invoke the default member.

または-or- IDispatch メンバーの場合は、"[DispID=3]" のように DispID を表す文字列。For IDispatch members, a string representing the DispID, for example "[DispID=3]".

invokeAttr
BindingFlags BindingFlags BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted. アクセスは、BindingFlagsPublicNonPublicPrivateInvokeMethod など、GetField のうちの 1 つになります。The access can be one of the BindingFlags such as Public, NonPublic, Private, InvokeMethod, GetField, and so on. 検索の種類を指定する必要はありません。The type of lookup need not be specified. 検索の種類が省略されている場合は、BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static を使用します。If the type of lookup is omitted, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static are used.

binder
Binder Binder Binder

一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

または-or- Nothing を使用する場合は、null 参照 (Visual Basic の場合は DefaultBinder)。A null reference (Nothing in Visual Basic), to use the DefaultBinder. 可変個の引数を指定してメソッド オーバーロードを正常に呼び出すには、Binder オブジェクトを明示的に定義することが必要な場合があるのでご注意ください。Note that explicitly defining a Binder object may be required for successfully invoking method overloads with variable arguments.

target
Object Object Object

指定したメンバーを呼び出す対象となるオブジェクト。The object on which to invoke the specified member.

args
Object[]

呼び出すメンバーに渡される引数を格納する配列。An array containing the arguments to pass to the member to invoke.

culture
CultureInfo CultureInfo CultureInfo

使用するグローバリゼーション ロケールを表すオブジェクト。これは、String 型の数値を Double に変換するなど、ロケール固有の変換を実行するために必要となる場合があります。The object representing the globalization locale to use, which may be necessary for locale-specific conversions, such as converting a numeric String to a Double.

または-or- 現在のスレッドの CultureInfo を使用する場合は、null 参照 (Visual Basic の場合は Nothing)。A null reference (Nothing in Visual Basic) to use the current thread's CultureInfo.

戻り値

呼び出されるメンバーの戻り値を表すオブジェクト。An object representing the return value of the invoked member.

実装

例外

invokeAttrCreateInstance が含まれず、namenull です。invokeAttr does not contain CreateInstance and name is null.

invokeAttr が有効な BindingFlags 属性ではありません。invokeAttr is not a valid BindingFlags attribute.

または-or- invokeAttr にバインド フラグ InvokeMethodCreateInstanceGetFieldSetFieldGetPropertySetProperty のいずれかが含まれていません。invokeAttr does not contain one of the following binding flags: InvokeMethod, CreateInstance, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttr に、CreateInstanceInvokeMethodGetFieldSetFieldGetPropertySetProperty との組み合わせが含まれています。invokeAttr contains CreateInstance combined with InvokeMethod, GetField, SetField, GetProperty, or SetProperty.

または-or- invokeAttrGetFieldSetField の両方が含まれています。invokeAttr contains both GetField and SetField.

または-or- invokeAttrGetPropertySetProperty の両方が含まれています。invokeAttr contains both GetProperty and SetProperty.

または-or- invokeAttr に、InvokeMethodSetField または SetProperty との組み合わせが含まれています。invokeAttr contains InvokeMethod combined with SetField or SetProperty.

または-or- invokeAttrSetField が含まれており、args に複数の要素があります。invokeAttr contains SetField and args has more than one element.

または-or- COM オブジェクトでこのメソッドが呼び出され、バインド フラグ BindingFlags.InvokeMethodBindingFlags.GetPropertyBindingFlags.SetPropertyBindingFlags.PutDispPropertyBindingFlags.PutRefDispProperty のいずれかが渡されませんでした。This method is called on a COM object and one of the following binding flags was not passed in: BindingFlags.InvokeMethod, BindingFlags.GetProperty, BindingFlags.SetProperty, BindingFlags.PutDispProperty, or BindingFlags.PutRefDispProperty.

または-or- 名前付きパラメーター配列の 1 つに、null である文字列が含まれています。One of the named parameter arrays contains a string that is null.

指定されたメンバーは、クラス初期化子です。The specified member is a class initializer.

フィールドまたはプロパティが見つかりません。The field or property cannot be found.

args 内の引数と一致するメソッドが見つかりません。No method can be found that matches the arguments in args.

または-or- 現在の Type オブジェクトは、オープン型のパラメーターを含む型を表します。つまり、ContainsGenericParameterstrue を返します。The current Type object represents a type that contains open type parameters, that is, ContainsGenericParameters returns true.

指定されたメンバーを target で呼び出すことができません。The specified member cannot be invoked on target.

複数のメソッドがバインディングの基準と一致します。More than one method matches the binding criteria.

name によって表されるメソッドに、1 つ以上の未指定のジェネリック型パラメーターがあります。The method represented by name has one or more unspecified generic type parameters. つまり、このメソッドの ContainsGenericParameters プロパティが true を返します。That is, the method's ContainsGenericParameters property returns true.

注釈

既定のバインダーでは処理されませんがCultureInfo(、cultureパラメーター)、抽象を使用するSystem.Reflection.Binderカスタム バインダーでは処理を書き込むクラスcultureします。Although the default binder does not process CultureInfo (the culture parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process culture.

注意

使用することはできませんInvokeMemberジェネリック メソッドを呼び出します。You cannot use InvokeMember to invoke a generic method.

BindingFlagsフィルター フラグは、検索に含めるメンバーを定義するために使用できます。The following BindingFlags filter flags can be used to define which members to include in the search:

  • 指定BindingFlags.Public検索にパブリック メンバーを含める。Specify BindingFlags.Public to include public members in the search.

  • 指定BindingFlags.NonPublic検索条件に非パブリック メンバー (つまり、プライベート、内部、および保護されたメンバー) を含める。Specify BindingFlags.NonPublic to include non-public members (that is, private, internal, and protected members) in the search.

  • 指定BindingFlags.FlattenHierarchy階層の静的メンバーを含めます。Specify BindingFlags.FlattenHierarchy to include static members up the hierarchy.

BindingFlags修飾フラグは、検索の動作を変更するために使用できます。The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCase 大文字と小文字を無視するnameします。BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnly 宣言されたメンバーのみを検索する、 Type、継承されたメンバーされません。BindingFlags.DeclaredOnly to search only the members declared on the Type, not members that were simply inherited.

BindingFlags呼び出しフラグは、メンバーを取得するには、どのような操作を示すために使用できます。The following BindingFlags invocation flags can be used to denote what action to take with the member:

  • CreateInstance コンス トラクターを呼び出す。CreateInstance to invoke a constructor. name 無視されます。name is ignored. 他の呼び出しフラグが無効です。Not valid with other invocation flags.

  • InvokeMethod コンス トラクターまたは型の初期化子ではされませんが、メソッドを呼び出す。InvokeMethod to invoke a method, but not a constructor or a type initializer. 無効SetFieldまたはSetPropertyします。Not valid with SetField or SetProperty. 場合InvokeMethod自体で指定されたBindingFlags.PublicBindingFlags.Instance、およびBindingFlags.Staticが自動的に含まれています。If InvokeMethod is specified by itself, BindingFlags.Public, BindingFlags.Instance, and BindingFlags.Static are automatically included.

  • GetField フィールドの値を取得します。GetField to get the value of a field. 無効SetFieldします。Not valid with SetField.

  • SetField フィールドの値を設定します。SetField to set the value of a field. 無効GetFieldします。Not valid with GetField.

  • GetProperty プロパティを取得します。GetProperty to get a property. 無効SetPropertyします。Not valid with SetProperty.

  • SetProperty プロパティを設定します。SetProperty to set a property. 無効GetPropertyします。Not valid with GetProperty.

詳細については、「System.Reflection.BindingFlags」を参照してください。See System.Reflection.BindingFlags for more information.

次の条件の両方に該当する場合、メソッドが呼び出されます。A method will be invoked if both of the following conditions are true:

  • メソッド宣言パラメーターの数の引数の数に等しい、args配列 (既定の引数がメンバーに定義されていない場合とBindingFlags.OptionalParamBindingを指定)。The number of parameters in the method declaration equals the number of arguments in the args array (unless default arguments are defined on the member and BindingFlags.OptionalParamBinding is specified).

  • 各引数の型は、バインダーによってパラメーターの型に変換できます。The type of each argument can be converted by the binder to the type of the parameter.

バインダーは、すべての一致するメソッドに紹介します。The binder will find all of the matching methods. 要求されたバインドの種類に基づいてこれらのメソッドが検出された (BindingFlagsInvokeMethodGetPropertyなど)。These methods are found based upon the type of binding requested (BindingFlags values InvokeMethod, GetProperty, and so on). メソッドのセットは、名前、引数の数とバインダーで定義されている検索修飾子のセットによってフィルター処理されます。The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder.

メソッドを選択した後に呼び出されます。After the method is selected, it is invoked. ユーザー補助機能は、その時点でチェックされます。Accessibility is checked at that point. 検索では、メソッドに関連付けられているユーザー補助属性に基づいて、メソッドのセットを検索するかを制御できます。The search may control which set of methods are searched based upon the accessibility attribute associated with the method. Binder.BindToMethodのメソッド、Binderクラスが呼び出されるメソッドを選択する責任を負います。The Binder.BindToMethod method of the Binder class is responsible for selecting the method to be invoked. 既定のバインダーでは、最も具体的な一致を選択します。The default binder selects the most specific match.

完全に信頼されたコードのアクセス制限は無視されます。つまり、プライベート コンス トラクター、メソッド、フィールド、およびプロパティにアクセスでき、コードが完全に信頼されたリフレクションを通じて起動します。Access restrictions are ignored for fully trusted code; that is, private constructors, methods, fields, and properties can be accessed and invoked through Reflection whenever the code is fully trusted.

使用することができますType.InvokeMemberを指定して、特定の値にフィールドを設定するBindingFlags.SetFieldします。You can use Type.InvokeMember to set a field to a particular value by specifying BindingFlags.SetField. たとえば、クラス C、および F と F をという名前のパブリック インスタンス フィールドを設定する場合は、Stringなどのコードを使用することができます。For example, if you want to set a public instance field named F on class C, and F is a String you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"}, null);

F がある場合、String[]などのコードを使用することができます。If F is a String[], you can use code such as:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}}, null);

この新しい配列にフィールド F が初期化されます。which will initialize the field F to this new array. 使用することもType.InvokeMemberなど、次のコードを使用して、値と、次の値のインデックスを指定することによって、配列内の位置を設定します。You can also use Type.InvokeMember to set a position in an array by supplying the index of the value and then the next value by using code such as the following:

typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"}, null);

これにより、文字列"b"に F を保持する配列内の文字列"z"が変更されます。This will change string "z" in the array that F holds to string "b".

呼び出した場合、IDispatchメンバーの文字列形式を使用して、メンバー名の代わりに DispID を指定する"[DispID = ##]"。When you invoke an IDispatch member you can specify the DispID instead of the member name, using the string format "[DispID=##]". たとえば、MyComMethod の DispID が 3 の場合は、文字列を指定できます"[DispID = 3]""MyComMethod"の代わりにします。For example, if the DispID of MyComMethod is 3, you can specify the string "[DispID=3]" instead of "MyComMethod". メンバーの DispID を呼び出すことは、名前で、メンバーを調べるよりも高速です。Invoking a member by DispID is faster than looking up the member by name. 複雑な集計のシナリオで、DispID は必要なメンバーを呼び出すための唯一の方法でがあります。In complex aggregation scenarios, the DispID is sometimes the only way to invoke the desired member.

注意

以降では、 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメソッドは、呼び出し元が許可されている場合は、非パブリック メンバーへのアクセスに使用できますReflectionPermissionで、ReflectionPermissionFlag.RestrictedMemberAccessフラグを設定し、許可セットまたはサブセットに非パブリック メンバーの許可セットが、呼び出し元に制限されている場合そのします。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (を参照してくださいリフレクションに関するセキュリティの考慮事項)。(See Security Considerations for Reflection.)

この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

セキュリティ

ReflectionPermission
アクセス許可に関係なく、非パブリック メンバーの次のように設定します。for accessing non-public members regardless of their grant set. 関連付けられた列挙体。 MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
アンマネージ コードを呼び出す。to call unmanaged code. 関連付けられた列挙体。 UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

適用対象