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 невозможно привязать, например, потому, что его невозможно найти, а 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

Параметры

type
Type

Тип Type создаваемого делегата.

target
Type

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

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

Параметры

type
Type

Тип Type создаваемого делегата.

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

Параметры

type
Type

Объект Type, представляющий тип создаваемого делегата.

firstArgument
Object

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

method
MethodInfo

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

throwOnBindFailure
Boolean

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

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

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

Исключения

type имеет значение null.

-или-

method имеет значение null.

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

Параметры

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 представляет собой открытый универсальный тип. То есть свойство 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

Параметры

type
Type

Тип Type создаваемого делегата.

method
MethodInfo

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

throwOnBindFailure
Boolean

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

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

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

Исключения

type имеет значение null.

-или-

method имеет значение null.

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

Параметры

type
Type

Тип Type создаваемого делегата.

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

Параметры

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. См. статью Типы среды выполнения в отражении.

Метод 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

Параметры

type
Type

Тип Type создаваемого делегата.

method
MethodInfo

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

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

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

Исключения

type имеет значение null.

-или-

method имеет значение null.

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

Параметры

type
Type

Тип Type создаваемого делегата.

target
Type

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

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.

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

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