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