Поделиться через


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)

Исходный код:
Delegate.CoreCLR.cs
Исходный код:
Delegate.CoreCLR.cs
Исходный код:
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

true, чтобы создать исключение, если method не может быть привязано; в противном случае false.

Возвращаемое значение

Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не является методом экземпляра.

-или-

method не удается привязать, например, так как его не удается найти, и throwOnBindFailuretrue.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для методов экземпляра. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

См. также раздел

Применяется к

CreateDelegate(Type, Type, String, Boolean)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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

Type, представляющий класс, реализующий method.

method
String

Имя статического метода, представляющего делегат.

ignoreCase
Boolean

Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.

Возвращаемое значение

Делегат указанного типа, представляющий указанный статический метод указанного класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

target не является RuntimeType.

-или-

target — это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue.

-или-

method не является методом static ( методShared в Visual Basic).

-или-

method не может быть привязан, например, так как его не удается найти.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для статических методов. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

Эта перегрузка метода эквивалентна вызову перегрузки метода CreateDelegate(Type, Type, String, Boolean, Boolean), указывая true для throwOnBindFailure.

См. также раздел

Применяется к

CreateDelegate(Type, Object, String, Boolean)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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

Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.

Возвращаемое значение

Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не является методом экземпляра.

-или-

method не может быть привязан, например, так как его не удается найти.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для методов экземпляра. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

Эта перегрузка метода эквивалентна вызову перегрузки метода CreateDelegate(Type, Object, String, Boolean, Boolean), указывая true для throwOnBindFailure.

См. также раздел

Применяется к

CreateDelegate(Type, Object, MethodInfo, Boolean)

Исходный код:
Delegate.CoreCLR.cs
Исходный код:
Delegate.CoreCLR.cs
Исходный код:
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

true, чтобы создать исключение, если method не может быть привязано; в противном случае false.

Возвращаемое значение

Делегат указанного типа, представляющий указанный статический или экземплярный метод или null, если throwOnBindFailurefalse, и делегат не может быть привязан к method.

Исключения

type null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не может быть привязан, и throwOnBindFailuretrue.

-или-

method не является RuntimeMethodInfo. См. типы среды выполнения вотражения.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Эта перегрузка метода и перегрузка метода CreateDelegate(Type, Object, MethodInfo), которая всегда вызывает сбой привязки, предоставляет наиболее гибкий способ создания делегатов. Их можно использовать для создания делегатов для статических или экземплярных методов с первым аргументом или без них.

Заметка

Если вы не предоставляете первый аргумент, используйте перегрузку метода CreateDelegate(Type, MethodInfo, Boolean) для повышения производительности.

Дополнительные сведения и примеры см. в дополнительных примечаниях API для System.Delegate.CreateDelegate.

См. также раздел

Применяется к

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

Исходный код:
Delegate.CoreCLR.cs
Исходный код:
Delegate.CoreCLR.cs
Исходный код:
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

Type, представляющий класс, реализующий method.

method
String

Имя статического метода, представляющего делегат.

ignoreCase
Boolean

Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.

throwOnBindFailure
Boolean

true, чтобы создать исключение, если method не может быть привязано; в противном случае false.

Возвращаемое значение

Делегат указанного типа, представляющий указанный статический метод указанного класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

target не является RuntimeType.

-или-

target — это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue.

-или-

method не является методом static ( методShared в Visual Basic).

-или-

method не удается привязать, например, так как его не удается найти, и throwOnBindFailuretrue.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для статических методов. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

См. также раздел

Применяется к

CreateDelegate(Type, MethodInfo, Boolean)

Исходный код:
Delegate.CoreCLR.cs
Исходный код:
Delegate.CoreCLR.cs
Исходный код:
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

true, чтобы создать исключение, если method не может быть привязано; в противном случае false.

Возвращаемое значение

Делегат указанного типа для представления указанного статического метода.

Исключения

type null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не может быть привязан, и throwOnBindFailuretrue.

-или-

method не является RuntimeMethodInfo. См. типы среды выполнения вотражения.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Эта перегрузка метода может создавать делегаты открытых статических методов и делегаты метода открытых экземпляров, т. е. делегаты, предоставляющие скрытый первый аргумент методов экземпляра. Подробное объяснение см. в более общем CreateDelegate(Type, Object, MethodInfo, Boolean) перегрузке метода, что позволяет создавать все сочетания открытых или закрытых делегатов для экземпляров или статических методов.

Заметка

Эту перегрузку метода следует использовать, если делегат не закрывается по своему первому аргументу, так как он несколько быстрее в этом случае.

Примеры см. в дополнительных примечаниях API для System.Delegate.CreateDelegate.

См. также раздел

Применяется к

CreateDelegate(Type, Object, String)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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

Имя метода экземпляра, представляющего делегат.

Возвращаемое значение

Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не является методом экземпляра.

-или-

method не может быть привязан, например, так как его не удается найти.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для методов экземпляра. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

Эта перегрузка метода эквивалентна вызову перегрузки метода CreateDelegate(Type, Object, String, Boolean, Boolean), указывая false для ignoreCase и true для throwOnBindFailure.

См. также раздел

Применяется к

CreateDelegate(Type, Object, MethodInfo)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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

Объект, к которому привязан делегат, или null для обработки method как static (Shared в Visual Basic).

method
MethodInfo

MethodInfo, описывающий статический или экземплярный метод, который делегат должен представлять.

Возвращаемое значение

Делегат указанного типа, представляющий указанный статический или экземплярный метод.

Исключения

type null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не может быть привязан.

-или-

method не является RuntimeMethodInfo. См. типы среды выполнения вотражения.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Вызов этой перегрузки метода эквивалентен вызову перегрузки метода CreateDelegate(Type, Object, MethodInfo, Boolean) и указанию true для throwOnBindFailure. Эти две перегрузки обеспечивают наиболее гибкий способ создания делегатов. Их можно использовать для создания делегатов для статических или экземплярных методов, а также для указания первого аргумента.

Заметка

Если вы не предоставляете первый аргумент, используйте перегрузку метода CreateDelegate(Type, MethodInfo) для повышения производительности.

Дополнительные сведения об этом API см. в дополнительных примечаниях API для System.Delegate.CreateDelegate.

См. также раздел

Применяется к

CreateDelegate(Type, MethodInfo)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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, описывающий статический или экземплярный метод, который делегат должен представлять.

Возвращаемое значение

Делегат указанного типа для представления указанного метода.

Исключения

type null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

method не может быть привязан.

-или-

method не является RuntimeMethodInfo. См. типы среды выполнения вотражения.

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Эта перегрузка может создавать делегаты для статических методов и делегатов метода открытых экземпляров; То есть делегаты, которые явно предоставляют скрытый первый аргумент методов экземпляра. Подробное объяснение см. в более общем CreateDelegate(Type, Object, MethodInfo) перегрузке метода, что позволяет создавать все сочетания открытых или закрытых делегатов для экземпляров или статических методов, а также при необходимости указывать первый аргумент.

Заметка

Эту перегрузку метода следует использовать, если делегат не закрывается по своему первому аргументу, так как он несколько быстрее в этом случае.

Дополнительные сведения об этом API см. в дополнительных примечаниях API для System.Delegate.CreateDelegate.

См. также раздел

Применяется к

CreateDelegate(Type, Type, String)

Исходный код:
Delegate.cs
Исходный код:
Delegate.cs
Исходный код:
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

Type, представляющий класс, реализующий method.

method
String

Имя статического метода, представляющего делегат.

Возвращаемое значение

Делегат указанного типа, представляющий указанный статический метод указанного класса.

Исключения

type null.

-или-

target null.

-или-

method null.

type не наследует MulticastDelegate.

-или-

type не является RuntimeType. См. типы среды выполнения вотражения.

-или-

target не является RuntimeType.

-или-

target — это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue.

-или-

method не является методом static ( методShared в Visual Basic).

Метод Invoketype не найден.

Вызывающий объект не имеет разрешений, необходимых для доступа к method.

Комментарии

Этот метод создает делегаты только для статических методов. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.

Эта перегрузка метода эквивалентна вызову перегрузки метода CreateDelegate(Type, Type, String, Boolean, Boolean), указывая false для ignoreCase и true для throwOnBindFailure.

См. также раздел

Применяется к