TypeDelegator.InvokeMember メソッド

定義

指定したメンバーを呼び出します。 呼び出すメソッドはアクセス可能でなければならず、指定したバインダーと呼び出し属性の制約の下で、指定された引数リストに対する一致の特定性が最高のものでなければなりません。

public:
 override 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 override 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);
public override 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);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, namedParameters As String()) As Object

パラメーター

name
String

呼び出すメンバーの名前。 コンストラクター、メソッド、プロパティ、フィールドなどを指定できます。 空の文字列 ("") を渡すと、既定メンバーが呼び出されます。

invokeAttr
BindingFlags

呼び出し属性。 BindingFlagsInvokeMethodCreateInstanceStaticGetFieldSetFieldGetProperty、または SetProperty のいずれかにする必要があります。 適切な呼び出し属性を指定する必要があります。 静的メンバーを呼び出す場合は、Static フラグを設定する必要があります。

binder
Binder

バインディング、引数型の強制変換、メンバーの呼び出し、および、リフレクションによる MemberInfo オブジェクトの取得を有効にするオブジェクト。 bindernull の場合は、既定のバインダーが使用されます。 「Binder」を参照してください。

target
Object

指定したメンバーを呼び出す対象となるオブジェクト。

args
Object[]

呼び出すメンバーのパラメーターの数、順序、および型を格納している Object 型の配列。 初期化されていないオブジェクトが args に格納されている場合は、既定のバインダーを使用して 0、0.0、または文字列に拡張できる空オブジェクトとして処理されます。Object

modifiers
ParameterModifier[]

args と同じ長さで、要素が呼び出されるメンバーの引数に関連付けられた属性を表す ParameterModifier 型の配列。 パラメーターにはメンバーのシグネチャに関連付けられた属性があります。 ByRef の場合は ParameterModifier.ByRef を使用します。ない場合は ParameterModifier.None を使用します。 既定のバインダーはこれらを厳密に一致させます。 InInOut などの属性は、バインディングでは使用しませんが、ParameterInfo を使用して表示できます。

culture
CultureInfo

型の強制変換を制御するために使用する CultureInfo のインスタンス。 このインスタンスは、たとえば、1000 を表す文字列を Double 値に変換する場合に必要です。これは、カルチャによって 1000 の表記が異なるためです。 culturenull の場合は、現在のスレッドの CultureInfoCultureInfo が使用されます。

namedParameters
String[]

要素ゼロから args 配列と一致させるパラメーター名が格納されている文字列配列。 配列の要素はすべて揃っている必要があります。 args LengthnamedParameters より大きくなっています。 Length より大きい場合、残りのパラメーターが順に設定されます。

戻り値

呼び出されたメンバーの戻り値を表す Object

注釈

次の両方の条件に該当する場合、メソッドが呼び出されます。

  • メソッド宣言内のパラメーターの数は、指定した引数リスト内の引数の数と等しくなります (メンバーに既定の引数が定義されていない限り)。

  • 各引数の型は、バインダーによって パラメーターの型に変換できます。

バインダーは、一致するすべてのメソッドを検索します。 これらのメソッドは、要求されたバインディングの種類 (BindingFlags.MethodInvoke、、 BindingFlags.GetPropertiesなど) に基づいて検出されます。 メソッドのセットは、名前、引数の数、およびバインダーで定義されている検索修飾子のセットによってフィルター処理されます。

メソッドが選択されると、呼び出されます。 その時点でアクセシビリティがチェックされます。 検索では、 メソッドに関連付けられているアクセシビリティ属性に基づいて検索するメソッドのセットを制御できます。 メソッドは Binder.BindToMethod 、呼び出されるメソッドを選択する役割を担います。 既定のバインダーは、最も具体的な一致を選択します。

注意

完全に信頼されたコードでは、アクセス制限は無視されます。 つまり、プライベート コンストラクター、メソッド、フィールド、およびプロパティは、コードが完全に信頼されるたびにリフレクションを使用してアクセスおよび呼び出すことができます。

現在、 は、InvokeMemberすべての種類のオブジェクトに対して Microsoft .NET Framework リフレクション セマンティクスを実行します。

name で指定されたメンバーが配列であり、 BindingFlags.GetField フラグが に invokeAttr設定されている場合、 args 配列は値が返される要素を指定します。 たとえば、次の呼び出しで object t を呼Typeび出すと、呼び出し元オブジェクトのメンバーである文字列配列 MyArray の最初の要素の値が返されます。

String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});

を使用 InvokeMember して、メンバー配列の 1 つ以上の要素を設定できます。 すべての要素は同じ値に設定されます。 配列は args 次のように書式設定する必要があります。

{index1,  
    index2,, value}  

たとえば、前の例の MyArray の最初のメンバーを設定する場合、構文は次のようになります。

t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new  
    Variant[]{0,"Updated"});  

適用対象

こちらもご覧ください