DynamicILInfo Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Dá suporte a modos alternativos de gerar o MSIL (Microsoft Intermediate Language) e metadados para um método dinâmico, incluindo métodos para criar tokens e para inserir os blobs de assinatura de variável local, tratamento de exceção e código.
public ref class DynamicILInfo sealed
public ref class DynamicILInfo
public sealed class DynamicILInfo
[System.Runtime.InteropServices.ComVisible(true)]
public class DynamicILInfo
public class DynamicILInfo
type DynamicILInfo = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type DynamicILInfo = class
Public NotInheritable Class DynamicILInfo
Public Class DynamicILInfo
- Herança
-
DynamicILInfo
- Atributos
Comentários
A DynamicILInfo classe permite que os desenvolvedores escrevam seus próprios geradores MSIL em vez de usar ILGenerator.
Para criar instâncias de outros tipos, chamar métodos e assim por diante, o MSIL gerado deve incluir tokens para essas entidades. A DynamicILInfo classe fornece várias sobrecargas do GetTokenFor método , que retornam tokens válidos no escopo do atual DynamicILInfo. Por exemplo, se você precisar chamar uma sobrecarga do Console.WriteLine método , poderá obter um RuntimeMethodHandle para essa sobrecarga e passá-lo para o GetTokenFor método para obter um token para inserir em seu MSIL.
Depois de criar Byte matrizes para sua assinatura de variável local, exceções e corpo do código, você pode usar os SetCodemétodos , SetExceptionse SetLocalSignature para inseri-las no DynamicMethod associado ao objeto DynamicILInfo .
Gerar seus próprios metadados e MSIL requer familiaridade com a documentação da CLI (Common Language Infrastructure), especialmente "Partição II: Definição e Semântica de Metadados" e "Partição III: Conjunto de Instruções CIL". Para obter mais informações, consulte CLI (Common Language Infrastructure) do ECMA 335.
Observação
Não use DynamicILInfo para gerar código que cria um delegado para outro método dinâmico chamando o construtor delegado diretamente. Em vez disso, use o CreateDelegate método para criar o delegado. Um delegado criado com o construtor delegado não tem uma referência ao método dinâmico de destino. O método dinâmico pode ser recuperado pela coleta de lixo enquanto o delegado ainda está em uso.
Propriedades
DynamicMethod |
Obtém o método dinâmico cujo corpo é gerado pela instância atual. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetTokenFor(Byte[]) |
Obtém um token, válido no escopo do DynamicILInfo atual, representando a assinatura do método dinâmico associado. |
GetTokenFor(DynamicMethod) |
Obtém um token, válido no escopo do DynamicILInfo atual, representando um método dinâmico a ser chamado do método associado. |
GetTokenFor(RuntimeFieldHandle) |
Obtém um token válido no escopo atual DynamicILInfo, que representa um campo para ser acessado do método dinâmico associado. |
GetTokenFor(RuntimeFieldHandle, RuntimeTypeHandle) |
Obtém um token válido no escopo atual DynamicILInfo, que representa um campo para ser acessado do método dinâmico associado, o campo está no tipo genérico especificado. |
GetTokenFor(RuntimeMethodHandle) |
Obtém um token válido no escopo atual DynamicILInfo, que representa um método para ser acessado do método dinâmico associado. |
GetTokenFor(RuntimeMethodHandle, RuntimeTypeHandle) |
Obtém um token válido no escopo do DynamicILInfo atual, que representa um método em um tipo genérico. |
GetTokenFor(RuntimeTypeHandle) |
Obtém um token válido no escopo do DynamicILInfo atual, representando um tipo a ser usado no método dinâmico associado. |
GetTokenFor(String) |
Obtém um token válido no escopo do DynamicILInfo atual, representando um literal de cadeia de caracteres a ser usado no método dinâmico associado. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
SetCode(Byte*, Int32, Int32) |
Define o corpo de código do método dinâmico associado. |
SetCode(Byte[], Int32) |
Define o corpo de código do método dinâmico associado. |
SetExceptions(Byte*, Int32) |
Define os metadados de exceção para o método dinâmico associado. |
SetExceptions(Byte[]) |
Define os metadados de exceção para o método dinâmico associado. |
SetLocalSignature(Byte*, Int32) |
Define a assinatura de variável local que descreve o layout de variáveis locais para o método dinâmico associado. |
SetLocalSignature(Byte[]) |
Define a assinatura de variável local que descreve o layout de variáveis locais para o método dinâmico associado. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |