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.
Fornece suporte para maneiras alternativas de gerar a MSIL (linguagem intermediária) Microsoft e metadados para um método dinâmico, incluindo métodos para criar tokens e para inserir o código, tratamento de exceções e blobs de assinatura de variável local.
public ref class DynamicILInfo
[System.Runtime.InteropServices.ComVisible(true)]
public class DynamicILInfo
public class DynamicILInfo
[<System.Runtime.InteropServices.ComVisible(true)>]
type DynamicILInfo = class
type DynamicILInfo = class
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, métodos de chamada e assim por diante, o MSIL gerado deve incluir tokens para essas entidades. A DynamicILInfo classe oferece várias sobrecargas do método GetTokenFor, que retornam tokens válidos no escopo do atual DynamicILInfo. Por exemplo, se você precisar chamar uma sobrecarga do método Console.WriteLine, poderá obter um RuntimeMethodHandle para essa sobrecarga e passá-lo para o método GetTokenFor para obter um token para incorporar no seu MSIL.
Depois de criar Byte matrizes para sua assinatura de variável local, exceções e corpo do código, você poderá usar os métodos SetCode, SetExceptions e SetLocalSignature para inseri-las no DynamicMethod associado ao seu DynamicILInfo objeto.
Gerar seus próprios metadados e MSIL requer familiaridade com a documentação da CLI (Common Language Infrastructure), especialmente "Partition II: Metadata Definition and Semmantics" e "Partition III: CIL Instruction Set". Para obter mais informações, consulte a CLI (Common Language Infrastructure) do ECMA 335.
Note
Não use DynamicILInfo para gerar código que cria um delegado para outro método dinâmico chamando diretamente o construtor delegado. 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
| Nome | Description |
|---|---|
| DynamicMethod |
Obtém o método dinâmico cujo corpo é gerado pela instância atual. |
Métodos
| Nome | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como a função hash predefinida. (Herdado de Object) |
| GetTokenFor(Byte[]) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando a assinatura do método dinâmico associado. |
| GetTokenFor(DynamicMethod) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um método dinâmico a ser chamado do método associado. |
| GetTokenFor(RuntimeFieldHandle, RuntimeTypeHandle) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um campo a ser acessado do método dinâmico associado; o campo está no tipo genérico especificado. |
| GetTokenFor(RuntimeFieldHandle) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um campo a ser acessado do método dinâmico associado. |
| GetTokenFor(RuntimeMethodHandle, RuntimeTypeHandle) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um método em um tipo genérico. |
| GetTokenFor(RuntimeMethodHandle) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um método a ser acessado do método dinâmico associado. |
| GetTokenFor(RuntimeTypeHandle) |
Obtém um token, válido no escopo do atual DynamicILInfo, representando um tipo a ser usado no método dinâmico associado. |
| GetTokenFor(String) |
Obtém um token, válido no escopo da atual DynamicILInfo, 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 Objectatual. (Herdado de Object) |
| SetCode(Byte[], Int32) |
Define o corpo do código do método dinâmico associado. |
| SetCode(Byte*, Int32, Int32) |
Define o corpo do código do método dinâmico associado. |
| SetExceptions(Byte[]) |
Define os metadados de exceção para o método dinâmico associado. |
| SetExceptions(Byte*, Int32) |
Define os metadados de exceção 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. |
| 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. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |