DynamicMethod.Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) DynamicMethod.Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) DynamicMethod.Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) Method

定義

指定したカルチャ情報で指定したバインダーの制約に基づいて、指定したパラメーターを使用して動的メソッドを呼び出します。Invokes the dynamic method using the specified parameters, under the constraints of the specified binder, with the specified culture information.

public:
 override System::Object ^ Invoke(System::Object ^ obj, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ parameters, System::Globalization::CultureInfo ^ culture);
public override object Invoke (object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfo culture);
override this.Invoke : obj * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj

パラメーター

obj
Object Object Object

動的メソッドは静的であるため、このパラメーターは動的メソッドでは無視されます。This parameter is ignored for dynamic methods, because they are static. nullを指定します。Specify null.

invokeAttr
BindingFlags BindingFlags BindingFlags

BindingFlags 値のビットごとの組み合わせ。A bitwise combination of BindingFlags values.

binder
Binder Binder Binder

バインディング、引数型の強制変換、メンバーの呼び出し、およびリフレクションを使用した Binder オブジェクトの取得を有効にする MemberInfo オブジェクト。A Binder object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. bindernull の場合は、既定のバインダーが使用されます。If binder is null, the default binder is used. 詳細については、「Binder」を参照してください。For more details, see Binder.

parameters
Object[]

引数リスト。An argument list. これは、呼び出すメソッドのパラメーターと同じ数、順序、および型の引数の配列です。This is an array of arguments with the same number, order, and type as the parameters of the method to be invoked. パラメーターがない場合は、このパラメーターを null にする必要があります。If there are no parameters this parameter should be null.

culture
CultureInfo CultureInfo CultureInfo

型の強制変換を制御するために使用する CultureInfo のインスタンス。An instance of CultureInfo used to govern the coercion of types. null の場合は、現在のスレッドの CultureInfo が使用されます。If this is null, the CultureInfo for the current thread is used. たとえば、この情報では、1000 を表す StringDouble 値に正しく変換する必要があります。これは、カルチャによって 1000 の表記が異なるためです。For example, this information is needed to correctly convert a String that represents 1000 to a Double value, because 1000 is represented differently by different cultures.

戻り値

呼び出されたメソッドの戻り値を格納する ObjectA Object containing the return value of the invoked method.

例外

VarArgs 呼び出し規約はサポートされていません。The VarArgs calling convention is not supported.

parameters 内の要素数が、動的メソッドのパラメーターの数と一致しません。The number of elements in parameters does not match the number of parameters in the dynamic method.

parameters の 1 つ以上の要素の型が、動的メソッドの対応するパラメーターの型と一致しません。The type of one or more elements of parameters does not match the type of the corresponding parameter of the dynamic method.

動的メソッドが、モジュールに関連付けられ、匿名でホストされず、skipVisibilityfalse に設定されて作成されました。ただし、public または internal (Visual Basic では Friend) 以外のメンバーにアクセスします。The dynamic method is associated with a module, is not anonymously hosted, and was constructed with skipVisibility set to false, but the dynamic method accesses members that are not public or internal (Friend in Visual Basic).

または-or- 動的メソッドが、匿名でホストされ、skipVisibilityfalse に設定されて作成されました。ただし、public 以外のメンバーにアクセスします。The dynamic method is anonymously hosted and was constructed with skipVisibility set to false, but it accesses members that are not public.

または-or- この動的メソッドには、検査できないコードが含まれています。The dynamic method contains unverifiable code. DynamicMethod については、「解説」の「検証」セクションを参照してください。See the "Verification" section in Remarks for DynamicMethod.

次のコード例では、米国英語のカルチャを使用して、完全にバインドされた動的メソッドを呼び出します。The following code example invokes a dynamic method with exact binding, using the US-English culture. このコード例は、 DynamicMethodクラスに対して提供される大規模な例の一部です。This code example is part of a larger example provided for the DynamicMethod class.

Console::WriteLine("\r\nUse the Invoke method to execute the dynamic method:");
// Create an array of arguments to use with the Invoke method.
array<Object^>^ invokeArgs = { "\r\nHello, World!", 42 };
// Invoke the dynamic method using the arguments. This is much
// slower than using the delegate, because you must create an
// array to contain the arguments, and value-type arguments
// must be boxed.
Object^ objRet = hello->Invoke(nullptr, BindingFlags::ExactBinding, nullptr, invokeArgs, gcnew CultureInfo("en-us"));
Console::WriteLine("hello.Invoke returned: " + objRet);
Console.WriteLine("\r\nUse the Invoke method to execute the dynamic method:");
// Create an array of arguments to use with the Invoke method.
object[] invokeArgs = {"\r\nHello, World!", 42};
// Invoke the dynamic method using the arguments. This is much
// slower than using the delegate, because you must create an
// array to contain the arguments, and value-type arguments
// must be boxed.
object objRet = hello.Invoke(null, BindingFlags.ExactBinding, null, invokeArgs, new CultureInfo("en-us"));
Console.WriteLine("hello.Invoke returned: " + objRet);
Console.WriteLine(vbCrLf & "Use the Invoke method to execute the dynamic method:")
' Create an array of arguments to use with the Invoke method.
Dim invokeArgs() As Object = {vbCrLf & "Hello, World!", 42}
' Invoke the dynamic method using the arguments. This is much
' slower than using the delegate, because you must create an
' array to contain the arguments, and value-type arguments
' must be boxed.
Dim objRet As Object = hello.Invoke(Nothing, _
    BindingFlags.ExactBinding, Nothing, invokeArgs, _
    New CultureInfo("en-us"))
Console.WriteLine("hello.Invoke returned: {0}", objRet)

注釈

リストされている例外に加えて、呼び出し元のコードは、動的メソッドによってスローされた例外をキャッチできるように準備する必要があります。In addition to the listed exceptions, the calling code should be prepared to catch any exceptions thrown by the dynamic method.

メソッドによってCreateDelegate作成されたデリゲートを使用して動的メソッドを実行する方が、 Invokeメソッドを使用して実行するよりも効率的です。Executing a dynamic method with a delegate created by the CreateDelegate method is more efficient than executing it with the Invoke method.

Invokeメソッドまたはメソッドを呼び出すと、動的メソッドCreateDelegateが完了します。Calling the Invoke method or the CreateDelegate method completes the dynamic method. パラメーター定義の変更や Microsoft 中間言語 (MSIL) の出力など、動的メソッドをさらに変更しようとしても無視されます。例外はスローされません。Any further attempt to alter the dynamic method, such as modifying parameter definitions or emitting more Microsoft intermediate language (MSIL), is ignored; no exception is thrown.

すべての動的メソッドは静的であるobjため、パラメーターは常に無視されます。All dynamic methods are static, so the obj parameter is always ignored. 動的メソッドをインスタンスメソッドと同様に扱うには、オブジェクトインスタンスをCreateDelegate(Type, Object)受け取るオーバーロードを使用します。To treat a dynamic method as if it were an instance method, use the CreateDelegate(Type, Object) overload that takes an object instance.

動的メソッドにパラメーターがない場合、のparameters null値はになります。If the dynamic method has no parameters, the value of parameters should be null. それ以外の場合、parameters 配列内の要素の数、型、および順序は、動的メソッドのパラメーターの数、型、および順序と同じである必要があります。Otherwise the number, type, and order of elements in the parameters array should be identical to the number, type, and order of parameters of the dynamic method.

注意

このメソッドオーバーロードは、 Invoke(Object, Object[]) MethodBaseクラスから継承されたメソッドオーバーロードによって呼び出されるため、前の解説は両方のオーバーロードに適用されます。This method overload is called by the Invoke(Object, Object[]) method overload inherited from the MethodBase class, so the preceding remarks apply to both overloads.

このメソッドはアクセス許可を直接要求しませんが、動的メソッドを呼び出すと、メソッドに応じてセキュリティ要求が発生する可能性があります。This method does not demand permissions directly, but invoking the dynamic method can result in security demands, depending on the method. たとえば、 restrictedSkipVisibilityパラメーターをにfalse設定して作成された、匿名でホストされる動的メソッドに対する要求は行われません。For example, no demands are made for anonymously hosted dynamic methods that are created with the restrictedSkipVisibility parameter set to false. restrictedSkipVisibility一方、をにtrue設定してメソッドを作成し、そのメソッドがターゲットアセンブリの隠しメンバーにアクセスできるようにする場合、メソッドは、 ReflectionPermissionFlag.MemberAccessターゲットアセンブリReflectionPermissionのアクセス許可とフラグを使用して要求を行います。On the other hand, if you create a method with restrictedSkipVisibility set to true so it can access a hidden member of a target assembly, the method will cause a demand for the permissions of the target assembly plus ReflectionPermission with the ReflectionPermissionFlag.MemberAccess flag.

注意

より前.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1では、このメソッドReflectionPermissionMemberAccessフラグを指定する必要があります。Prior to the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method required ReflectionPermission with the MemberAccess flag.

適用対象

こちらもご覧ください