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. それ以外の場合、パラメーター配列内の要素の数、種類、および動的メソッドのパラメーターの順序と同じことが必要です。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、メソッドがプラス対象アセンブリのアクセス許可の要求では、ターゲット アセンブリの非表示のメンバーにアクセスできる、ようにReflectionPermissionで、ReflectionPermissionFlag.MemberAccessフラグ。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、このメソッドが必要なReflectionPermissionで、MemberAccessフラグ。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.

適用対象

こちらもご覧ください