TypeDelegator.InvokeMember メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したメンバーを呼び出します。 呼び出すメソッドはアクセス可能でなければならず、指定したバインダーと呼び出し属性の制約の下で、指定された引数リストに対する一致の特定性が最高のものでなければなりません。
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
呼び出し属性。
BindingFlags の InvokeMethod
、CreateInstance
、Static
、GetField
、SetField
、GetProperty
、または SetProperty
のいずれかにする必要があります。 適切な呼び出し属性を指定する必要があります。 静的メンバーを呼び出す場合は、Static
フラグを設定する必要があります。
- binder
- Binder
バインディング、引数型の強制変換、メンバーの呼び出し、および、リフレクションによる MemberInfo
オブジェクトの取得を有効にするオブジェクト。
binder
が null
の場合は、既定のバインダーが使用されます。 「Binder」を参照してください。
- target
- Object
指定したメンバーを呼び出す対象となるオブジェクト。
- args
- Object[]
呼び出すメンバーのパラメーターの数、順序、および型を格納している Object
型の配列。 初期化されていないオブジェクトが args
に格納されている場合は、既定のバインダーを使用して 0、0.0、または文字列に拡張できる空オブジェクトとして処理されます。Object
- modifiers
- ParameterModifier[]
args
と同じ長さで、要素が呼び出されるメンバーの引数に関連付けられた属性を表す ParameterModifier
型の配列。 パラメーターにはメンバーのシグネチャに関連付けられた属性があります。 ByRef の場合は ParameterModifier.ByRef
を使用します。ない場合は ParameterModifier.None
を使用します。 既定のバインダーはこれらを厳密に一致させます。
In
や InOut
などの属性は、バインディングでは使用しませんが、ParameterInfo
を使用して表示できます。
- culture
- CultureInfo
型の強制変換を制御するために使用する CultureInfo
のインスタンス。 このインスタンスは、たとえば、1000 を表す文字列を Double 値に変換する場合に必要です。これは、カルチャによって 1000 の表記が異なるためです。
culture
が null
の場合は、現在のスレッドの CultureInfo の CultureInfo が使用されます。
- namedParameters
- String[]
要素ゼロから args
配列と一致させるパラメーター名が格納されている文字列配列。 配列の要素はすべて揃っている必要があります。
args
Length
が namedParameters
より大きくなっています。
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"});
適用対象
こちらもご覧ください
.NET