Delegate.CreateDelegate 方法

定义

创建指定类型的委托。

重载

CreateDelegate(Type, Object, String, Boolean, Boolean)

使用用于指定是否区分大小写的值和针对绑定失败的指定行为,创建指定类型的委托,该委托表示要对指定类实例调用的指定实例方法。

CreateDelegate(Type, Type, String, Boolean)

使用用于指定是否区分大小写的值创建指定类型的委托,该委托表示指定类的指定静态方法。

CreateDelegate(Type, Object, String, Boolean)

创建指定类型的委托,该委托表示要按指定的大小写敏感度对指定类实例调用的指定实例方法。

CreateDelegate(Type, Object, MethodInfo, Boolean)

使用指定的第一个自变量和针对绑定失败的指定行为,创建表示指定的静态方法或实例方法的指定类型的委托。

CreateDelegate(Type, Type, String, Boolean, Boolean)

使用用于指定是否区分大小写的值和针对绑定失败的指定行为,创建指定类型的委托,该委托表示指定类的指定静态方法。

CreateDelegate(Type, MethodInfo, Boolean)

使用针对绑定失败的指定行为,创建用于表示指定静态方法的指定类型的委托。

CreateDelegate(Type, Object, String)

创建指定类型的委托,该委托表示要对指定的类实例调用的指定实例方法。

CreateDelegate(Type, Object, MethodInfo)

使用指定的第一个参数创建指定类型的委托,该委托表示指定的静态方法或实例方法。

CreateDelegate(Type, MethodInfo)

创建指定类型的委托以表示指定的方法。

CreateDelegate(Type, Type, String)

创建指定类型的委托,该委托表示指定类的指定静态方法。

CreateDelegate(Type, Object, String, Boolean, Boolean)

Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs

使用用于指定是否区分大小写的值和针对绑定失败的指定行为,创建指定类型的委托,该委托表示要对指定类实例调用的指定实例方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Object ^ target, System::String ^ method, bool ignoreCase, bool throwOnBindFailure);
public static Delegate? CreateDelegate (Type type, object target, string method, bool ignoreCase, bool throwOnBindFailure);
public static Delegate CreateDelegate (Type type, object target, string method, bool ignoreCase, bool throwOnBindFailure);
static member CreateDelegate : Type * obj * string * bool * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Object, method As String, ignoreCase As Boolean, throwOnBindFailure As Boolean) As Delegate

参数

type
Type

要创建的委托的 Type

target
Object

类实例,对其调用 method

method
String

委托要表示的实例方法的名称。

ignoreCase
Boolean

一个布尔值,它指示在比较方法名称时是否忽略大小写。

throwOnBindFailure
Boolean

如果无法绑定 method 时引发异常,则为 true;否则为 false

返回

指定的类型的委托,表示要对指定的类实例调用的指定的实例方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

method 不是实例方法。

- 或 -

无法绑定 method,例如因为找不到它,并且 throwOnBindFailuretrue

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为实例方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

另请参阅

适用于

CreateDelegate(Type, Type, String, Boolean)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

使用用于指定是否区分大小写的值创建指定类型的委托,该委托表示指定类的指定静态方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, Type ^ target, System::String ^ method, bool ignoreCase);
public static Delegate CreateDelegate (Type type, Type target, string method, bool ignoreCase);
static member CreateDelegate : Type * Type * string * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Type, method As String, ignoreCase As Boolean) As Delegate

参数

type
Type

要创建的委托的 Type

target
Type

表示实现 method 的类的 Type

method
String

委托要表示的静态方法的名称。

ignoreCase
Boolean

一个布尔值,它指示在比较方法名称时是否忽略大小写。

返回

指定类型的委托,该委托表示指定类的指定静态方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

target 不是 RuntimeType

- 或 -

target 为开放式泛型类型。 也就是说,其 ContainsGenericParameters 属性为 true

- 或 -

method 不是 static 方法(在 Visual Basic 中为 Shared 方法)。

- 或 -

无法绑定 method,例如因为找不到它。

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为静态方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

此方法重载等效于调用 CreateDelegate(Type, Type, String, Boolean, Boolean) 方法重载,为 throwOnBindFailure指定 true

另请参阅

适用于

CreateDelegate(Type, Object, String, Boolean)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

创建指定类型的委托,该委托表示要按指定的大小写敏感度对指定类实例调用的指定实例方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Object ^ target, System::String ^ method, bool ignoreCase);
public static Delegate CreateDelegate (Type type, object target, string method, bool ignoreCase);
static member CreateDelegate : Type * obj * string * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Object, method As String, ignoreCase As Boolean) As Delegate

参数

type
Type

要创建的委托的 Type

target
Object

类实例,对其调用 method

method
String

委托要表示的实例方法的名称。

ignoreCase
Boolean

一个布尔值,它指示在比较方法名称时是否忽略大小写。

返回

指定的类型的委托,表示要对指定的类实例调用的指定的实例方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

method 不是实例方法。

- 或 -

无法绑定 method,例如因为找不到它。

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为实例方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

此方法重载等效于调用 CreateDelegate(Type, Object, String, Boolean, Boolean) 方法重载,为 throwOnBindFailure指定 true

另请参阅

适用于

CreateDelegate(Type, Object, MethodInfo, Boolean)

Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs

使用指定的第一个自变量和针对绑定失败的指定行为,创建表示指定的静态方法或实例方法的指定类型的委托。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Object ^ firstArgument, System::Reflection::MethodInfo ^ method, bool throwOnBindFailure);
public static Delegate? CreateDelegate (Type type, object? firstArgument, System.Reflection.MethodInfo method, bool throwOnBindFailure);
public static Delegate CreateDelegate (Type type, object firstArgument, System.Reflection.MethodInfo method, bool throwOnBindFailure);
static member CreateDelegate : Type * obj * System.Reflection.MethodInfo * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, firstArgument As Object, method As MethodInfo, throwOnBindFailure As Boolean) As Delegate

参数

type
Type

一个 Type,表示要创建的委托类型。

firstArgument
Object

一个 Object,它是委托表示的方法的第一个自变量。 对于实例方法,它必须与实例类型兼容。

method
MethodInfo

描述该委托要表示的静态或实例方法的 MethodInfo

throwOnBindFailure
Boolean

如果无法绑定 method 时引发异常,则为 true;否则为 false

返回

表示指定静态方法或实例方法的指定类型的委托;如果 throwOnBindFailurefalse,并且委托无法绑定到 method,则为 null

例外

typenull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

无法绑定 method,且 throwOnBindFailuretrue

- 或 -

method 不是 RuntimeMethodInfo。 请参阅反射中的运行时类型

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法重载和 CreateDelegate(Type, Object, MethodInfo) 方法重载(在绑定失败时始终引发)提供了最灵活的方法来创建委托。 可以使用它们为静态或实例方法创建委托,无论是否具有第一个参数。

注意

如果未提供第一个参数,请使用 CreateDelegate(Type, MethodInfo, Boolean) 方法重载来提高性能。

有关详细信息和示例,请参阅 System.Delegate.CreateDelegate 的补充 API 说明

另请参阅

适用于

CreateDelegate(Type, Type, String, Boolean, Boolean)

Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs

使用用于指定是否区分大小写的值和针对绑定失败的指定行为,创建指定类型的委托,该委托表示指定类的指定静态方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, Type ^ target, System::String ^ method, bool ignoreCase, bool throwOnBindFailure);
public static Delegate? CreateDelegate (Type type, Type target, string method, bool ignoreCase, bool throwOnBindFailure);
public static Delegate CreateDelegate (Type type, Type target, string method, bool ignoreCase, bool throwOnBindFailure);
static member CreateDelegate : Type * Type * string * bool * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Type, method As String, ignoreCase As Boolean, throwOnBindFailure As Boolean) As Delegate

参数

type
Type

要创建的委托的 Type

target
Type

表示实现 method 的类的 Type

method
String

委托要表示的静态方法的名称。

ignoreCase
Boolean

一个布尔值,它指示在比较方法名称时是否忽略大小写。

throwOnBindFailure
Boolean

如果无法绑定 method 时引发异常,则为 true;否则为 false

返回

指定类型的委托,该委托表示指定类的指定静态方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

target 不是 RuntimeType

- 或 -

target 为开放式泛型类型。 也就是说,其 ContainsGenericParameters 属性为 true

- 或 -

method 不是 static 方法(在 Visual Basic 中为 Shared 方法)。

- 或 -

无法绑定 method,例如因为找不到它,并且 throwOnBindFailuretrue

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为静态方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

另请参阅

适用于

CreateDelegate(Type, MethodInfo, Boolean)

Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs
Source:
Delegate.CoreCLR.cs

使用针对绑定失败的指定行为,创建用于表示指定静态方法的指定类型的委托。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Reflection::MethodInfo ^ method, bool throwOnBindFailure);
public static Delegate? CreateDelegate (Type type, System.Reflection.MethodInfo method, bool throwOnBindFailure);
public static Delegate CreateDelegate (Type type, System.Reflection.MethodInfo method, bool throwOnBindFailure);
static member CreateDelegate : Type * System.Reflection.MethodInfo * bool -> Delegate
Public Shared Function CreateDelegate (type As Type, method As MethodInfo, throwOnBindFailure As Boolean) As Delegate

参数

type
Type

要创建的委托的 Type

method
MethodInfo

描述该委托要表示的静态或实例方法的 MethodInfo

throwOnBindFailure
Boolean

如果无法绑定 method 时引发异常,则为 true;否则为 false

返回

表示指定静态方法的指定类型的委托。

例外

typenull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

无法绑定 method,且 throwOnBindFailuretrue

- 或 -

method 不是 RuntimeMethodInfo。 请参阅反射中的运行时类型

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法重载可以创建打开的静态方法委托和打开的实例方法委托 - 即公开实例方法的第一个隐藏参数的委托。 有关详细说明,请参阅更常规 CreateDelegate(Type, Object, MethodInfo, Boolean) 的方法重载,它允许你为实例或静态方法创建开放或关闭委托的所有组合。

注意

当委托未在其第一个参数上关闭时,应使用此方法重载,因为在这种情况下,它的速度要快一些。

有关示例,请参阅 System.Delegate.CreateDelegate 的补充 API 说明

另请参阅

适用于

CreateDelegate(Type, Object, String)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

创建指定类型的委托,该委托表示要对指定的类实例调用的指定实例方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Object ^ target, System::String ^ method);
public static Delegate CreateDelegate (Type type, object target, string method);
static member CreateDelegate : Type * obj * string -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Object, method As String) As Delegate

参数

type
Type

要创建的委托的 Type

target
Object

类实例,对其调用 method

method
String

委托要表示的实例方法的名称。

返回

指定的类型的委托,表示要对指定的类实例调用的指定的实例方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

method 不是实例方法。

- 或 -

无法绑定 method,例如因为找不到它。

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为实例方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

此方法重载等效于调用CreateDelegate(Type, Object, String, Boolean, Boolean)方法重载,为 ignoreCase 指定 falsetruethrowOnBindFailure

另请参阅

适用于

CreateDelegate(Type, Object, MethodInfo)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

使用指定的第一个参数创建指定类型的委托,该委托表示指定的静态方法或实例方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Object ^ firstArgument, System::Reflection::MethodInfo ^ method);
public static Delegate CreateDelegate (Type type, object? firstArgument, System.Reflection.MethodInfo method);
public static Delegate CreateDelegate (Type type, object firstArgument, System.Reflection.MethodInfo method);
static member CreateDelegate : Type * obj * System.Reflection.MethodInfo -> Delegate
Public Shared Function CreateDelegate (type As Type, firstArgument As Object, method As MethodInfo) As Delegate

参数

type
Type

要创建的委托的 Type

firstArgument
Object

委托要绑定到的对象,若要将 method 作为 static(在 Visual Basic 中为 Shared),则为 null

method
MethodInfo

描述该委托要表示的静态或实例方法的 MethodInfo

返回

指定类型的委托,表示指定的静态或实例方法。

例外

typenull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

无法绑定 method

- 或 -

method 不是 RuntimeMethodInfo。 请参阅反射中的运行时类型

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

调用此方法重载等效于调用 CreateDelegate(Type, Object, MethodInfo, Boolean) 方法重载并为 指定 truethrowOnBindFailure。 这两个重载提供了最灵活的方法来创建委托。 可以使用它们为静态或实例方法创建委托,还可以选择指定第一个参数。

注意

如果未提供第一个参数,请使用 CreateDelegate(Type, MethodInfo) 方法重载以提高性能。

有关此 API 的详细信息,请参阅 System.Delegate.CreateDelegate 的补充 API 备注

另请参阅

适用于

CreateDelegate(Type, MethodInfo)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

创建指定类型的委托以表示指定的方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, System::Reflection::MethodInfo ^ method);
public static Delegate CreateDelegate (Type type, System.Reflection.MethodInfo method);
static member CreateDelegate : Type * System.Reflection.MethodInfo -> Delegate
Public Shared Function CreateDelegate (type As Type, method As MethodInfo) As Delegate

参数

type
Type

要创建的委托的 Type

method
MethodInfo

描述该委托要表示的静态或实例方法的 MethodInfo

返回

用于表示指定方法的指定类型的委托。

例外

typenull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

无法绑定 method

- 或 -

method 不是 RuntimeMethodInfo。 请参阅反射中的运行时类型

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此重载可以为静态方法和开放实例方法委托创建委托;即显式提供实例方法的第一个隐藏参数的委托。 有关详细说明,请参阅更常规 CreateDelegate(Type, Object, MethodInfo) 的方法重载,该重载允许为实例或静态方法创建打开或关闭委托的所有组合,并选择性地指定第一个参数。

注意

当委托在其第一个参数上未关闭时,应使用此方法重载,因为在这种情况下,它的速度要快一些。

有关此 API 的详细信息,请参阅 System.Delegate.CreateDelegate 的补充 API 备注

另请参阅

适用于

CreateDelegate(Type, Type, String)

Source:
Delegate.cs
Source:
Delegate.cs
Source:
Delegate.cs

创建指定类型的委托,该委托表示指定类的指定静态方法。

public:
 static Delegate ^ CreateDelegate(Type ^ type, Type ^ target, System::String ^ method);
public static Delegate CreateDelegate (Type type, Type target, string method);
static member CreateDelegate : Type * Type * string -> Delegate
Public Shared Function CreateDelegate (type As Type, target As Type, method As String) As Delegate

参数

type
Type

要创建的委托的 Type

target
Type

表示实现 method 的类的 Type

method
String

委托要表示的静态方法的名称。

返回

指定类型的委托,该委托表示指定类的指定静态方法。

例外

typenull

targetnull

methodnull

type 不继承 MulticastDelegate

- 或 -

type 不是 RuntimeType。 请参阅反射中的运行时类型

- 或 -

target 不是 RuntimeType

- 或 -

target 为开放式泛型类型。 也就是说,其 ContainsGenericParameters 属性为 true

- 或 -

method 不是 static 方法(在 Visual Basic 中为 Shared 方法)。

- 或 -

无法绑定 method,例如因为找不到它,并且 throwOnBindFailuretrue

找不到 typeInvoke 方法。

调用方没有访问 method 所必需的权限。

注解

此方法仅为静态方法创建委托。 实例方法是与类的实例关联的方法;静态方法是与类本身关联的方法。

此方法重载等效于调用CreateDelegate(Type, Type, String, Boolean, Boolean)方法重载,为 ignoreCase 指定 falsetruethrowOnBindFailure

另请参阅

适用于