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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
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);
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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
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 型の配列。 初期化されていないargsObject含まれている場合、空として扱われます。既定のバインダーでは、0、0.0、または文字列に拡大できます。
- modifiers
- ParameterModifier[]
呼び出されるメンバーの引数に関連付けられた属性を表す要素を持つ、ParameterModifierと同じ長さのargs型の配列。 パラメーターには、メンバーのシグネチャに関連付けられている属性があります。 ByRef の場合は、 ParameterModifier.ByRefを使用し、使用しない場合は ParameterModifier.None を使用します。 既定のバインダーは、これらに正確に一致します。
InやInOutなどの属性はバインドでは使用されず、ParameterInfoを使用して表示できます。
- culture
- CultureInfo
型の強制型の制御に使用 CultureInfo のインスタンス。 これは、たとえば、1000 を表す文字列を Double 値に変換するために必要です。1000 は異なるカルチャによって異なる方法で表されるためです。
cultureがnullされている場合は、現在のスレッドのCultureInfoのCultureInfoが使用されます。
- namedParameters
- String[]
要素 0 から始まり、 args 配列と一致するパラメーター名を含む文字列配列。 配列に穴を空けてはなりません。 もしargsならば。
Length が namedParameters より大きい。
Lengthの場合、残りのパラメーターは順番に入力されます。
返品
呼び出されたメンバーの戻り値を表す Object 。
- 属性
注釈
次の条件が両方とも当てはまる場合は、メソッドが呼び出されます。
メソッド宣言内のパラメーターの数は、指定した引数リスト内の引数の数と等しくなります (メンバーで既定の引数が定義されていない場合)。
各引数の型は、バインダーによってパラメーターの型に変換できます。
バインダーは、一致するすべてのメソッドを検索します。 これらのメソッドは、要求されたバインディングの種類 (BindingFlags.MethodInvoke、 BindingFlags.GetPropertiesなど) に基づいて見つかります。 メソッドのセットは、名前、引数の数、およびバインダーで定義されている検索修飾子のセットによってフィルター処理されます。
メソッドが選択されると、呼び出されます。 その時点でアクセシビリティがチェックされます。 検索では、メソッドに関連付けられているアクセシビリティ属性に基づいて、検索するメソッドのセットを制御できます。 Binder.BindToMethod メソッドは、呼び出すメソッドを選択します。 既定のバインダーは、最も具体的な一致を選択します。
Note
完全に信頼されたコードでは、アクセス制限は無視されます。 つまり、プライベート コンストラクター、メソッド、フィールド、およびプロパティは、コードが完全に信頼されるたびにリフレクションを使用してアクセスおよび呼び出すことができます。
現在、InvokeMember は、すべての種類のオブジェクトに対して Microsoft .NET Framework リフレクション セマンティクスを実行します。
名前で指定されたメンバーが配列であり、 BindingFlags.GetField フラグが invokeAttrに設定されている場合、 args 配列は値を返す要素を指定します。 たとえば、次の呼び出し Type オブジェクト t を通じて、呼び出し元オブジェクトのメンバーである文字列配列 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"});