IReflect.InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) メソッド


指定されたメンバーを呼び出します。Invokes a specified member.

 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 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



検索対象のメンバーの名前。The name of the member to find.


BindingFlags 呼び出し属性の 1 つ。One of the BindingFlags invocation attributes. invokeAttrパラメーターには、コンストラクター、メソッド、プロパティ、フィールドなどを指定できます。The invokeAttr parameter may be a constructor, method, property, or field. 適切な呼び出し属性を指定する必要があります。A suitable invocation attribute must be specified. メンバーの名前として空の文字列 ("") を渡すことによって、クラスの既定のメンバーを呼び出します。Invoke the default member of a class by passing the empty string ("") as the name of the member.


BindingFlags ビット フラグの 1 つ。One of the BindingFlags bit flags. このメソッドに関連するプロパティを格納する Binder を実装します。Implements Binder, containing properties related to this method.


指定したメンバーを呼び出す対象となるオブジェクト。The object on which to invoke the specified member. 静的メンバーの場合、このパラメーターは無視されます。This parameter is ignored for static members.


呼び出すメンバーのパラメーターの数、順序、および型を格納するオブジェクトの配列。An array of objects that contains the number, order, and type of the parameters of the member to be invoked. パラメーターがない場合は、空の配列です。This is an empty array if there are no parameters.


ParameterModifier オブジェクトの配列です。An array of ParameterModifier objects. この配列は、メタデータにある呼び出されたメンバーの引数属性を表す args パラメーターと同じ長さです。This array has the same length as the args parameter, representing the invoked member's argument attributes in the metadata. パラメーターには、属性 pdInpdOutpdRetvalpdOptional、および pdHasDefault を使用できます。A parameter can have the following attributes: pdIn, pdOut, pdRetval, pdOptional, and pdHasDefault. これらはそれぞれ、[In]、[Out]、[retval]、[optional]、および既定のパラメーターを表します。These represent [In], [Out], [retval], [optional], and a default parameter, respectively. これらの属性は、さまざまな相互運用性サービスで使用されます。These attributes are used by various interoperability services.


型の強制変換を制御するために使用する CultureInfo のインスタンス。An instance of CultureInfo used to govern the coercion of types. たとえば、culture は 1000 を表す文字列を String 値に変換します。これは、カルチャによって 1000 の表記が異なるためです。DoubleFor example, culture converts a String that represents 1000 to a Double value, since 1000 is represented differently by different cultures. このパラメーターが null の場合は、現在のスレッドの CultureInfo が使用されます。If this parameter is null, the CultureInfo for the current thread is used.


パラメーターの文字列配列。StringA String array of parameters.


指定されたメンバー。The specified member.


フィールド set に複数の引数が指定されています。More than one argument is specified for a field set.

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

メソッドが見つかりません。The method cannot be found.

必要な ReflectionPermission がない状態でプライベート メンバーが呼び出されました。A private member is invoked without the necessary ReflectionPermission.

次の例では、Now プロパティの値を取得します。The following example obtains the value of the Now property.

#using <System.DLL>

using namespace System;
using namespace System::Reflection;

#define NULL 0
void main()
   Type^ tDate = Type::GetType( L"System.DateTime" );
   Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
   Console::WriteLine( result->ToString() );

using System;
using System.Reflection;

public class MainClass 
    public static void Main(string[] args)
        Type tDate = typeof(System.DateTime);
        Object result = tDate.InvokeMember("Now", 
            BindingFlags.GetProperty, null, null, new Object[0]);
Imports System.Reflection

Public Class MainClass
    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim tDate As Type = GetType(System.DateTime)
        Dim result As [Object] = tDate.InvokeMember("Now", _
            BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
    End Sub
End Class


呼び出すメソッドはアクセス可能でなければならず、指定したバインダーと呼び出し属性の制約の下で、指定された引数リストに対する一致の特定性が最高のものでなければなりません。The method that is to be invoked must be accessible and provide the most specific match with the specified argument list, under the constraints of the specified binder and invocation attributes.

メソッド宣言のパラメーターの数が、指定された引数リスト内の引数の数と等しい場合、メソッドが呼び出されます。また、バインダーによって各引数の型をパラメーターの型に変換できます。A method is invoked if the number of parameters in the method declaration equals the number of arguments in the specified argument list, and the type of each argument can be converted by the binder to the type of the parameter.


InvokeMember メソッドに渡されるパラメーター修飾子の配列には、1つのパラメーター修飾子を含める必要があります。The array of parameter modifiers passed to the InvokeMember method must contain a single parameter modifier. COM に公開されたときに参照によって渡す必要がある引数を決定するときに、最初のパラメーター修飾子だけが考慮されます。Only the first parameter modifier is considered when determining which argument needs to be passed by reference when exposed to COM.

バインダーは、要求されたバインディングの種類 (BindingFlags.InvokeMethodGetPropertiesなど) に従って、一致するすべてのメソッドを検索します。The binder finds all matching methods, in accordance with the type of binding requested (BindingFlags.InvokeMethod, GetProperties, 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, and accessibility is checked at that point. 検索では、メソッドに関連付けられているアクセシビリティ属性に基づいて検索されるメソッドのセットを制御できます。The search may control which set of methods is searched based upon the accessibility attribute associated with the method. BindToMethod 呼び出されるメソッドを選択します。BindToMethod selects 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.