Delegate.CreateDelegate Método

Definição

Cria um delegado do tipo especificado.

Sobrecargas

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

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada, com a diferenciação de maiúsculas e minúsculas especificada e o comportamento especificado na falha de associação.

CreateDelegate(Type, Type, String, Boolean)

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada, com a diferenciação de maiúsculas e minúsculas especificada.

CreateDelegate(Type, Object, String, Boolean)

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada com a diferenciação de maiúsculas e minúsculas especificada.

CreateDelegate(Type, Object, MethodInfo, Boolean)

Cria um delegado do tipo especificado que representa o método estático ou de instância especificado, com o primeiro argumento especificado e o comportamento especificado sobre a falha na associação.

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

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada, com a diferenciação de maiúsculas e minúsculas especificada e o comportamento especificado na falha de associação.

CreateDelegate(Type, MethodInfo, Boolean)

Cria um delegado do tipo especificado para representar o método estático especificado, com o comportamento especificado em caso de falha ao associar.

CreateDelegate(Type, Object, String)

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada.

CreateDelegate(Type, Object, MethodInfo)

Cria um delegado do tipo especificado que representa o método estático ou de instância especificado, com o primeiro argumento especificado.

CreateDelegate(Type, MethodInfo)

Cria um delegado do tipo especificado para representar o método especificado.

CreateDelegate(Type, Type, String)

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada.

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

Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada, com a diferenciação de maiúsculas e minúsculas especificada e o comportamento especificado na falha de associação.

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);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Object

A instância de classe na qual method é invocado.

method
String

O nome do método de instância que o delegado deve representar.

ignoreCase
Boolean

Um booliano que indica se deve ignorar o caso ao comparar o nome do método.

throwOnBindFailure
Boolean

true lançar uma exceção se method não puder ser associado; caso contrário, false.

Retornos

Um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não é um método de instância.

-ou-

method não pode ser associado, por exemplo, porque não pode ser encontrado e throwOnBindFailure é true.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria apenas delegados para métodos de instância. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Type, String, Boolean)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada, com a diferenciação de maiúsculas e minúsculas especificada.

public static Delegate CreateDelegate (Type type, Type target, string method, bool ignoreCase);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Type

O Type que representa a classe que implementa method.

method
String

O nome do método estático que o delegado deve representar.

ignoreCase
Boolean

Um booliano que indica se deve ignorar o caso ao comparar o nome do método.

Retornos

Um delegado do tipo especificado que representa o método estático especificado da classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

target não é um RuntimeType.

-ou-

target é um tipo genérico aberto. Ou seja, sua propriedade ContainsGenericParameters é true.

-ou-

method não é um método static ( métodoShared no Visual Basic).

-ou-

method não pode ser associado, por exemplo, porque não pode ser encontrado.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria delegados somente para métodos estáticos. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Essa sobrecarga de método é equivalente a chamar a sobrecarga do método CreateDelegate(Type, Type, String, Boolean, Boolean), especificando true para throwOnBindFailure.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Object, String, Boolean)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada com a diferenciação de maiúsculas e minúsculas especificada.

public static Delegate CreateDelegate (Type type, object target, string method, bool ignoreCase);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Object

A instância de classe na qual method é invocado.

method
String

O nome do método de instância que o delegado deve representar.

ignoreCase
Boolean

Um booliano que indica se deve ignorar o caso ao comparar o nome do método.

Retornos

Um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não é um método de instância.

-ou-

method não pode ser associado, por exemplo, porque não pode ser encontrado.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria apenas delegados para métodos de instância. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Essa sobrecarga de método é equivalente a chamar a sobrecarga do método CreateDelegate(Type, Object, String, Boolean, Boolean), especificando true para throwOnBindFailure.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Object, MethodInfo, Boolean)

Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs

Cria um delegado do tipo especificado que representa o método estático ou de instância especificado, com o primeiro argumento especificado e o comportamento especificado sobre a falha na associação.

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);

Parâmetros

type
Type

Um Type que representa o tipo de delegado a ser criado.

firstArgument
Object

Um Object que é o primeiro argumento do método que o delegado representa. Por exemplo, os métodos devem ser compatíveis com o tipo de instância.

method
MethodInfo

O MethodInfo que descreve o método estático ou de instância que o delegado deve representar.

throwOnBindFailure
Boolean

true lançar uma exceção se method não puder ser associado; caso contrário, false.

Retornos

Um delegado do tipo especificado que representa o método estático ou de instância especificado ou null se throwOnBindFailure for false e o delegado não puder ser associado a method.

Exceções

type é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não pode ser associado e throwOnBindFailure é true.

-ou-

method não é um RuntimeMethodInfo. Consulte tipos de runtime emde reflexão.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Essa sobrecarga de método e a sobrecarga do método CreateDelegate(Type, Object, MethodInfo), que sempre gera falha ao associar, fornecem a maneira mais flexível de criar delegados. Você pode usá-los para criar delegados para métodos estáticos ou de instância, com ou sem um primeiro argumento.

Nota

Se você não fornecer um primeiro argumento, use a sobrecarga do método CreateDelegate(Type, MethodInfo, Boolean) para melhorar o desempenho.

Para obter mais informações e exemplos, consulte comentários da API Suplementar para System.Delegate.CreateDelegate.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada, com a diferenciação de maiúsculas e minúsculas especificada e o comportamento especificado na falha de associação.

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);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Type

O Type que representa a classe que implementa method.

method
String

O nome do método estático que o delegado deve representar.

ignoreCase
Boolean

Um booliano que indica se deve ignorar o caso ao comparar o nome do método.

throwOnBindFailure
Boolean

true lançar uma exceção se method não puder ser associado; caso contrário, false.

Retornos

Um delegado do tipo especificado que representa o método estático especificado da classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

target não é um RuntimeType.

-ou-

target é um tipo genérico aberto. Ou seja, sua propriedade ContainsGenericParameters é true.

-ou-

method não é um método static ( métodoShared no Visual Basic).

-ou-

method não pode ser associado, por exemplo, porque não pode ser encontrado e throwOnBindFailure é true.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria delegados somente para métodos estáticos. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, MethodInfo, Boolean)

Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs
Origem:
Delegate.CoreCLR.cs

Cria um delegado do tipo especificado para representar o método estático especificado, com o comportamento especificado em caso de falha ao associar.

public static Delegate? CreateDelegate (Type type, System.Reflection.MethodInfo method, bool throwOnBindFailure);
public static Delegate CreateDelegate (Type type, System.Reflection.MethodInfo method, bool throwOnBindFailure);

Parâmetros

type
Type

O Type do delegado a ser criado.

method
MethodInfo

O MethodInfo que descreve o método estático ou de instância que o delegado deve representar.

throwOnBindFailure
Boolean

true lançar uma exceção se method não puder ser associado; caso contrário, false.

Retornos

Um delegado do tipo especificado para representar o método estático especificado.

Exceções

type é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não pode ser associado e throwOnBindFailure é true.

-ou-

method não é um RuntimeMethodInfo. Consulte tipos de runtime emde reflexão.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Essa sobrecarga de método pode criar delegados de método estático aberto e delegados de método de instância aberta – ou seja, delegados que expõem o primeiro argumento oculto dos métodos de instância. Para obter uma explicação detalhada, consulte a sobrecarga de método de CreateDelegate(Type, Object, MethodInfo, Boolean) mais geral, que permite que você crie todas as combinações de delegados abertos ou fechados para métodos estáticos ou por exemplo.

Nota

Essa sobrecarga de método deve ser usada quando o delegado não é fechado sobre seu primeiro argumento, porque é um pouco mais rápido nesse caso.

Para obter exemplos, consulte comentários da API Suplementar para System.Delegate.CreateDelegate.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Object, String)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada.

public static Delegate CreateDelegate (Type type, object target, string method);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Object

A instância de classe na qual method é invocado.

method
String

O nome do método de instância que o delegado deve representar.

Retornos

Um delegado do tipo especificado que representa o método de instância especificado a ser invocado na instância de classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não é um método de instância.

-ou-

method não pode ser associado, por exemplo, porque não pode ser encontrado.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria apenas delegados para métodos de instância. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Essa sobrecarga de método é equivalente a chamar a sobrecarga do método CreateDelegate(Type, Object, String, Boolean, Boolean), especificando false para ignoreCase e true para throwOnBindFailure.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Object, MethodInfo)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado que representa o método estático ou de instância especificado, com o primeiro argumento especificado.

public static Delegate CreateDelegate (Type type, object? firstArgument, System.Reflection.MethodInfo method);
public static Delegate CreateDelegate (Type type, object firstArgument, System.Reflection.MethodInfo method);

Parâmetros

type
Type

O Type do delegado a ser criado.

firstArgument
Object

O objeto ao qual o delegado está associado ou null para tratar method como static (Shared no Visual Basic).

method
MethodInfo

O MethodInfo que descreve o método estático ou de instância que o delegado deve representar.

Retornos

Um delegado do tipo especificado que representa o método estático ou de instância especificado.

Exceções

type é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não pode ser associado.

-ou-

method não é um RuntimeMethodInfo. Consulte tipos de runtime emde reflexão.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Chamar essa sobrecarga de método é equivalente a chamar a sobrecarga do método CreateDelegate(Type, Object, MethodInfo, Boolean) e especificar true para throwOnBindFailure. Essas duas sobrecargas fornecem a maneira mais flexível de criar delegados. Você pode usá-los para criar delegados para métodos estáticos ou de instância e, opcionalmente, para especificar o primeiro argumento.

Nota

Se você não fornecer um primeiro argumento, use a sobrecarga do método CreateDelegate(Type, MethodInfo) para melhorar o desempenho.

Para obter mais informações sobre essa API, consulte comentários da API Suplementar para System.Delegate.CreateDelegate.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, MethodInfo)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado para representar o método especificado.

public static Delegate CreateDelegate (Type type, System.Reflection.MethodInfo method);

Parâmetros

type
Type

O Type do delegado a ser criado.

method
MethodInfo

O MethodInfo que descreve o método estático ou de instância que o delegado deve representar.

Retornos

Um delegado do tipo especificado para representar o método especificado.

Exceções

type é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

method não pode ser associado.

-ou-

method não é um RuntimeMethodInfo. Consulte tipos de runtime emde reflexão.

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Essa sobrecarga pode criar delegados para métodos estáticos e delegados de método de instância aberta; ou seja, delegados que fornecem explicitamente o primeiro argumento oculto dos métodos de instância. Para obter uma explicação detalhada, consulte a sobrecarga de método de CreateDelegate(Type, Object, MethodInfo) mais geral, que permite que você crie todas as combinações de delegados abertos ou fechados para métodos estáticos ou por exemplo, e, opcionalmente, especifique um primeiro argumento.

Nota

Essa sobrecarga de método deve ser usada quando o delegado não é fechado sobre seu primeiro argumento, porque é um pouco mais rápido nesse caso.

Para obter mais informações sobre essa API, consulte comentários da API Suplementar para System.Delegate.CreateDelegate.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateDelegate(Type, Type, String)

Origem:
Delegate.cs
Origem:
Delegate.cs
Origem:
Delegate.cs

Cria um delegado do tipo especificado que representa o método estático especificado da classe especificada.

public static Delegate CreateDelegate (Type type, Type target, string method);

Parâmetros

type
Type

O Type do delegado a ser criado.

target
Type

O Type que representa a classe que implementa method.

method
String

O nome do método estático que o delegado deve representar.

Retornos

Um delegado do tipo especificado que representa o método estático especificado da classe especificada.

Exceções

type é null.

-ou-

target é null.

-ou-

method é null.

type não herda MulticastDelegate.

-ou-

type não é um RuntimeType. Consulte tipos de runtime emde reflexão.

-ou-

target não é um RuntimeType.

-ou-

target é um tipo genérico aberto. Ou seja, sua propriedade ContainsGenericParameters é true.

-ou-

method não é um método static ( métodoShared no Visual Basic).

O método Invoke de type não foi encontrado.

O chamador não tem as permissões necessárias para acessar method.

Comentários

Esse método cria delegados somente para métodos estáticos. Um método de instância é um método associado a uma instância de uma classe; um método estático é um método associado à própria classe.

Essa sobrecarga de método é equivalente a chamar a sobrecarga do método CreateDelegate(Type, Type, String, Boolean, Boolean), especificando false para ignoreCase e true para throwOnBindFailure.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1