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
Параметры
- target
- Object
Экземпляр класса, на котором вызывается method
.
- method
- String
Имя метода экземпляра, представляющего делегат.
- ignoreCase
- Boolean
Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.
- throwOnBindFailure
- Boolean
true
, чтобы создать исключение, если method
не может быть привязано; в противном случае false
.
Возвращаемое значение
Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не является методом экземпляра.
-или-
method
не удается привязать, например, так как его не удается найти, и throwOnBindFailure
true
.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- method
- String
Имя статического метода, представляющего делегат.
- ignoreCase
- Boolean
Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.
Возвращаемое значение
Делегат указанного типа, представляющий указанный статический метод указанного класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
target
не является RuntimeType
.
-или-
target
— это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue
.
-или-
method
не является методом static
( методShared
в Visual Basic).
-или-
method
не может быть привязан, например, так как его не удается найти.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- target
- Object
Экземпляр класса, на котором вызывается method
.
- method
- String
Имя метода экземпляра, представляющего делегат.
- ignoreCase
- Boolean
Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.
Возвращаемое значение
Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не является методом экземпляра.
-или-
method
не может быть привязан, например, так как его не удается найти.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- firstArgument
- Object
Object, который является первым аргументом метода, который представляет делегат. Например, методы должны быть совместимы с типом экземпляра.
- method
- MethodInfo
MethodInfo, описывающий статический или экземплярный метод, который делегат должен представлять.
- throwOnBindFailure
- Boolean
true
, чтобы создать исключение, если method
не может быть привязано; в противном случае false
.
Возвращаемое значение
Делегат указанного типа, представляющий указанный статический или экземплярный метод или null
, если throwOnBindFailure
false
, и делегат не может быть привязан к method
.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не может быть привязан, и throwOnBindFailure
true
.
-или-
method
не является RuntimeMethodInfo
. См. типы среды выполнения вотражения.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- method
- String
Имя статического метода, представляющего делегат.
- ignoreCase
- Boolean
Логическое значение, указывающее, следует ли игнорировать регистр при сравнении имени метода.
- throwOnBindFailure
- Boolean
true
, чтобы создать исключение, если method
не может быть привязано; в противном случае false
.
Возвращаемое значение
Делегат указанного типа, представляющий указанный статический метод указанного класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
target
не является RuntimeType
.
-или-
target
— это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue
.
-или-
method
не является методом static
( методShared
в Visual Basic).
-или-
method
не удается привязать, например, так как его не удается найти, и throwOnBindFailure
true
.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- method
- MethodInfo
MethodInfo, описывающий статический или экземплярный метод, который делегат должен представлять.
- throwOnBindFailure
- Boolean
true
, чтобы создать исключение, если method
не может быть привязано; в противном случае false
.
Возвращаемое значение
Делегат указанного типа для представления указанного статического метода.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не может быть привязан, и throwOnBindFailure
true
.
-или-
method
не является RuntimeMethodInfo
. См. типы среды выполнения вотражения.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- target
- Object
Экземпляр класса, на котором вызывается method
.
- method
- String
Имя метода экземпляра, представляющего делегат.
Возвращаемое значение
Делегат указанного типа, представляющего указанный метод экземпляра для вызова в указанном экземпляре класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не является методом экземпляра.
-или-
method
не может быть привязан, например, так как его не удается найти.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- firstArgument
- Object
Объект, к которому привязан делегат, или null
для обработки method
как static
(Shared
в Visual Basic).
- method
- MethodInfo
MethodInfo, описывающий статический или экземплярный метод, который делегат должен представлять.
Возвращаемое значение
Делегат указанного типа, представляющий указанный статический или экземплярный метод.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не может быть привязан.
-или-
method
не является RuntimeMethodInfo
. См. типы среды выполнения вотражения.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- method
- MethodInfo
MethodInfo, описывающий статический или экземплярный метод, который делегат должен представлять.
Возвращаемое значение
Делегат указанного типа для представления указанного метода.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
method
не может быть привязан.
-или-
method
не является RuntimeMethodInfo
. См. типы среды выполнения вотражения.
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к 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
Параметры
- method
- String
Имя статического метода, представляющего делегат.
Возвращаемое значение
Делегат указанного типа, представляющий указанный статический метод указанного класса.
Исключения
type
не наследует MulticastDelegate.
-или-
type
не является RuntimeType
. См. типы среды выполнения вотражения.
-или-
target
не является RuntimeType
.
-или-
target
— это открытый универсальный тип. То есть его свойство ContainsGenericParameterstrue
.
-или-
method
не является методом static
( методShared
в Visual Basic).
Метод Invoke
type
не найден.
Вызывающий объект не имеет разрешений, необходимых для доступа к method
.
Комментарии
Этот метод создает делегаты только для статических методов. Метод экземпляра — это метод, связанный с экземпляром класса; статический метод — это метод, связанный с самим классом.
Эта перегрузка метода эквивалентна вызову перегрузки метода CreateDelegate(Type, Type, String, Boolean, Boolean), указывая false
для ignoreCase
и true
для throwOnBindFailure
.
См. также раздел
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по