ModuleBuilder 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.
Define e representa um módulo em um assembly dinâmico.
public ref class ModuleBuilder : System::Reflection::Module, System::Runtime::InteropServices::_ModuleBuilder
public ref class ModuleBuilder : System::Reflection::Module
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class ModuleBuilder : System.Reflection.Module, System.Runtime.InteropServices._ModuleBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public class ModuleBuilder : System.Reflection.Module, System.Runtime.InteropServices._ModuleBuilder
public class ModuleBuilder : System.Reflection.Module
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type ModuleBuilder = class
inherit Module
interface _ModuleBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ModuleBuilder = class
inherit Module
interface _ModuleBuilder
type ModuleBuilder = class
inherit Module
Public Class ModuleBuilder
Inherits Module
Implements _ModuleBuilder
Public Class ModuleBuilder
Inherits Module
- Herança
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir demonstra o uso para ModuleBuilder criar um módulo dinâmico. Observe que o ModuleBuilder é criado chamando DefineDynamicModule em , em AssemblyBuildervez de por meio de um construtor.
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Security.Permissions;
public class CodeGenerator
{
AssemblyBuilder myAssemblyBuilder;
public CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain myCurrentDomain = AppDomain.CurrentDomain;
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Define a dynamic assembly in the current application domain.
myAssemblyBuilder = myCurrentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.Run);
// Define a dynamic module in this assembly.
ModuleBuilder myModuleBuilder = myAssemblyBuilder.
DefineDynamicModule("TempModule");
// Define a runtime class with specified name and attributes.
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType
("TempClass",TypeAttributes.Public);
// Add 'Greeting' field to the class, with the specified attribute and type.
FieldBuilder greetingField = myTypeBuilder.DefineField("Greeting",
typeof(String), FieldAttributes.Public);
Type[] myMethodArgs = { typeof(String) };
// Add 'MyMethod' method to the class, with the specified attribute and signature.
MethodBuilder myMethod = myTypeBuilder.DefineMethod("MyMethod",
MethodAttributes.Public, CallingConventions.Standard, null,myMethodArgs);
ILGenerator methodIL = myMethod.GetILGenerator();
methodIL.EmitWriteLine("In the method...");
methodIL.Emit(OpCodes.Ldarg_0);
methodIL.Emit(OpCodes.Ldarg_1);
methodIL.Emit(OpCodes.Stfld, greetingField);
methodIL.Emit(OpCodes.Ret);
myTypeBuilder.CreateType();
}
public AssemblyBuilder MyAssembly
{
get
{
return this.myAssemblyBuilder;
}
}
}
public class TestClass
{
public static void Main()
{
CodeGenerator myCodeGenerator = new CodeGenerator();
// Get the assembly builder for 'myCodeGenerator' object.
AssemblyBuilder myAssemblyBuilder = myCodeGenerator.MyAssembly;
// Get the module builder for the above assembly builder object .
ModuleBuilder myModuleBuilder = myAssemblyBuilder.
GetDynamicModule("TempModule");
Console.WriteLine("The fully qualified name and path to this "
+ "module is :" +myModuleBuilder.FullyQualifiedName);
Type myType = myModuleBuilder.GetType("TempClass");
MethodInfo myMethodInfo =
myType.GetMethod("MyMethod");
// Get the token used to identify the method within this module.
MethodToken myMethodToken =
myModuleBuilder.GetMethodToken(myMethodInfo);
Console.WriteLine("Token used to identify the method of 'myType'"
+ " within the module is {0:x}",myMethodToken.Token);
object[] args={"Hello."};
object myObject = Activator.CreateInstance(myType,null,null);
myMethodInfo.Invoke(myObject,args);
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Security.Permissions
Public Class CodeGenerator
Private myAssemblyBuilder As AssemblyBuilder
Public Sub New()
' Get the current application domain for the current thread.
Dim myCurrentDomain As AppDomain = AppDomain.CurrentDomain
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Define a dynamic assembly in the current application domain.
myAssemblyBuilder = _
myCurrentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run)
' Define a dynamic module in this assembly.
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")
' Define a runtime class with specified name and attributes.
Dim myTypeBuilder As TypeBuilder = _
myModuleBuilder.DefineType("TempClass", TypeAttributes.Public)
' Add 'Greeting' field to the class, with the specified attribute and type.
Dim greetingField As FieldBuilder = _
myTypeBuilder.DefineField("Greeting", GetType(String), FieldAttributes.Public)
Dim myMethodArgs As Type() = {GetType(String)}
' Add 'MyMethod' method to the class, with the specified attribute and signature.
Dim myMethod As MethodBuilder = _
myTypeBuilder.DefineMethod("MyMethod", MethodAttributes.Public, _
CallingConventions.Standard, Nothing, myMethodArgs)
Dim methodIL As ILGenerator = myMethod.GetILGenerator()
methodIL.EmitWriteLine("In the method...")
methodIL.Emit(OpCodes.Ldarg_0)
methodIL.Emit(OpCodes.Ldarg_1)
methodIL.Emit(OpCodes.Stfld, greetingField)
methodIL.Emit(OpCodes.Ret)
myTypeBuilder.CreateType()
End Sub
Public ReadOnly Property MyAssembly() As AssemblyBuilder
Get
Return Me.myAssemblyBuilder
End Get
End Property
End Class
Public Class TestClass
<PermissionSetAttribute(SecurityAction.Demand, Name:="FullTrust")> _
Public Shared Sub Main()
Dim myCodeGenerator As New CodeGenerator()
' Get the assembly builder for 'myCodeGenerator' object.
Dim myAssemblyBuilder As AssemblyBuilder = myCodeGenerator.MyAssembly
' Get the module builder for the above assembly builder object .
Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.GetDynamicModule("TempModule")
Console.WriteLine("The fully qualified name and path to this " + _
"module is :" + myModuleBuilder.FullyQualifiedName)
Dim myType As Type = myModuleBuilder.GetType("TempClass")
Dim myMethodInfo As MethodInfo = myType.GetMethod("MyMethod")
' Get the token used to identify the method within this module.
Dim myMethodToken As MethodToken = myModuleBuilder.GetMethodToken(myMethodInfo)
Console.WriteLine("Token used to identify the method of 'myType'" + _
" within the module is {0:x}", myMethodToken.Token)
Dim args As Object() = {"Hello."}
Dim myObject As Object = Activator.CreateInstance(myType, Nothing, Nothing)
myMethodInfo.Invoke(myObject, args)
End Sub
End Class
Comentários
Para obter uma instância de ModuleBuilder, use o AssemblyBuilder.DefineDynamicModule método.
Propriedades
| Nome | Description |
|---|---|
| Assembly |
Obtém o assembly dinâmico que definiu essa instância de ModuleBuilder. |
| Assembly |
Obtém o apropriado Assembly para esta instância de Module. (Herdado de Module) |
| CustomAttributes |
Obtém uma coleção que contém os atributos personalizados deste módulo. (Herdado de Module) |
| FullyQualifiedName |
Obtém um nome totalmente qualificado e um |
| MDStreamVersion |
Obtém a versão do fluxo de metadados. |
| MDStreamVersion |
Obtém a versão do fluxo de metadados. (Herdado de Module) |
| MetadataToken |
Obtém um token que identifica o módulo dinâmico atual em metadados. |
| MetadataToken |
Obtém um token que identifica o módulo em metadados. (Herdado de Module) |
| ModuleHandle |
Obtém um identificador para o módulo. (Herdado de Module) |
| ModuleVersionId |
Obtém um UUID (identificador universal exclusivo) que pode ser usado para distinguir entre duas versões de um módulo. |
| ModuleVersionId |
Obtém um UUID (identificador universal exclusivo) que pode ser usado para distinguir entre duas versões de um módulo. (Herdado de Module) |
| Name |
Uma cadeia de caracteres que indica que este é um módulo na memória. |
| Name |
Obtém um |
| ScopeName |
Obtém uma cadeia de caracteres que representa o nome do módulo dinâmico. |
| ScopeName |
Obtém uma cadeia de caracteres que representa o nome do módulo. (Herdado de Module) |
Métodos
| Nome | Description |
|---|---|
| CreateGlobalFunctions() |
Conclui as definições de função global e as definições de dados globais para este módulo dinâmico. |
| DefineDocument(String, Guid, Guid, Guid) |
Define um documento para a origem. |
| DefineEnum(String, TypeAttributes, Type) |
Define um tipo de enumeração que é um tipo de valor com um único campo não estático chamado |
| DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Define um método global com o nome, atributos, convenção de chamada, tipo de retorno, modificadores personalizados para o tipo de retorno, tipos de parâmetro e modificadores personalizados para os tipos de parâmetro. |
| DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Define um método global com o nome, atributos, convenção de chamada, tipo de retorno e tipos de parâmetro especificados. |
| DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Define um método global com o nome, atributos, tipo de retorno e tipos de parâmetro especificados. |
| DefineInitializedData(String, Byte[], FieldAttributes) |
Define um campo de dados inicializado na seção .sdata do arquivo PE (executável portátil). |
| DefineManifestResource(String, Stream, ResourceAttributes) |
Define um BLOB (objeto binário grande) que representa um recurso de manifesto a ser inserido no assembly dinâmico. |
| DefinePInvokeMethod(String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet) |
Define um |
| DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet) |
Define um |
| DefineResource(String, String, ResourceAttributes) |
Define o recurso inserido gerenciado nomeado com os atributos especificados que devem ser armazenados neste módulo. |
| DefineResource(String, String) |
Define o recurso inserido gerenciado nomeado a ser armazenado neste módulo. |
| DefineType(String, TypeAttributes, Type, Int32) |
Constrói um |
| DefineType(String, TypeAttributes, Type, PackingSize, Int32) |
Constrói um |
| DefineType(String, TypeAttributes, Type, PackingSize) |
Constrói um |
| DefineType(String, TypeAttributes, Type, Type[]) |
Constrói um |
| DefineType(String, TypeAttributes, Type) |
Constrói um |
| DefineType(String, TypeAttributes) |
Constrói um |
| DefineType(String) |
Constrói um |
| DefineUninitializedData(String, Int32, FieldAttributes) |
Define um campo de dados não inicializado na seção .sdata do arquivo PE (executável portátil). |
| DefineUnmanagedResource(Byte[]) |
Define um recurso inserido não gerenciado dado um BLOB (objeto binário grande) opaco de bytes. |
| DefineUnmanagedResource(String) |
Define um recurso não gerenciado dado o nome do arquivo de recurso Win32. |
| Equals(Object) |
Retorna um valor que indica se essa instância é igual ao objeto especificado. |
| Equals(Object) |
Determina se este módulo e o objeto especificado são iguais. (Herdado de Module) |
| FindTypes(TypeFilter, Object) |
Retorna uma matriz de classes aceitas pelos critérios de filtro e filtro especificados. (Herdado de Module) |
| GetArrayMethod(Type, String, CallingConventions, Type, Type[]) |
Retorna o método nomeado em uma classe de matriz. |
| GetArrayMethodToken(Type, String, CallingConventions, Type, Type[]) |
Retorna o token para o método nomeado em uma classe de matriz. |
| GetConstructorToken(ConstructorInfo, IEnumerable<Type>) |
Retorna o token usado para identificar o construtor que tem os atributos e tipos de parâmetro especificados dentro deste módulo. |
| GetConstructorToken(ConstructorInfo) |
Retorna o token usado para identificar o construtor especificado neste módulo. |
| GetCustomAttributes(Boolean) |
Retorna todos os atributos personalizados que foram aplicados ao atual ModuleBuilder. |
| GetCustomAttributes(Boolean) |
Retorna todos os atributos personalizados. (Herdado de Module) |
| GetCustomAttributes(Type, Boolean) |
Retorna todos os atributos personalizados que foram aplicados ao atual ModuleBuildere que derivam de um tipo de atributo especificado. |
| GetCustomAttributes(Type, Boolean) |
Obtém atributos personalizados do tipo especificado. (Herdado de Module) |
| GetCustomAttributesData() |
Retorna informações sobre os atributos que foram aplicados ao atual ModuleBuilder, expressos como CustomAttributeData objetos. |
| GetCustomAttributesData() |
Retorna uma lista de CustomAttributeData objetos para o módulo atual, que pode ser usado no contexto somente reflexão. (Herdado de Module) |
| GetField(String, BindingFlags) |
Retorna um campo no nível do módulo, definido na região .sdata do arquivo PE (executável portátil), que tem o nome e os atributos de associação especificados. |
| GetField(String, BindingFlags) |
Retorna um campo com o nome e os atributos de associação especificados. (Herdado de Module) |
| GetField(String) |
Retorna um campo com o nome especificado. (Herdado de Module) |
| GetFields() |
Retorna os campos globais definidos no módulo. (Herdado de Module) |
| GetFields(BindingFlags) |
Retorna todos os campos definidos na região .sdata do arquivo PE (executável portátil) que correspondem aos sinalizadores de associação especificados. |
| GetFields(BindingFlags) |
Retorna os campos globais definidos no módulo que correspondem aos sinalizadores de associação especificados. (Herdado de Module) |
| GetFieldToken(FieldInfo) |
Retorna o token usado para identificar o campo especificado neste módulo. |
| GetHashCode() |
Devolve o código hash para esta instância. |
| GetHashCode() |
Devolve o código hash para esta instância. (Herdado de Module) |
| GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Retorna um método com o nome especificado, informações de associação, convenção de chamada e tipos de parâmetro e modificadores. (Herdado de Module) |
| GetMethod(String, Type[]) |
Retorna um método que tem o nome e os tipos de parâmetro especificados. (Herdado de Module) |
| GetMethod(String) |
Retorna um método com o nome especificado. (Herdado de Module) |
| GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Retorna o método de nível de módulo que corresponde aos critérios especificados. |
| GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Retorna a implementação do método de acordo com os critérios especificados. (Herdado de Module) |
| GetMethods() |
Retorna os métodos globais definidos no módulo. (Herdado de Module) |
| GetMethods(BindingFlags) |
Retorna todos os métodos que foram definidos no nível do módulo para o atual ModuleBuildere que correspondem aos sinalizadores de associação especificados. |
| GetMethods(BindingFlags) |
Retorna os métodos globais definidos no módulo que correspondem aos sinalizadores de associação especificados. (Herdado de Module) |
| GetMethodToken(MethodInfo, IEnumerable<Type>) |
Retorna o token usado para identificar o método que tem os atributos e tipos de parâmetro especificados dentro deste módulo. |
| GetMethodToken(MethodInfo) |
Retorna o token usado para identificar o método especificado neste módulo. |
| GetObjectData(SerializationInfo, StreamingContext) |
Fornece uma implementação ISerializable para objetos serializados. (Herdado de Module) |
| GetPEKind(PortableExecutableKinds, ImageFileMachine) |
Obtém um par de valores que indica a natureza do código em um módulo e a plataforma direcionada pelo módulo. |
| GetPEKind(PortableExecutableKinds, ImageFileMachine) |
Obtém um par de valores que indica a natureza do código em um módulo e a plataforma direcionada pelo módulo. (Herdado de Module) |
| GetSignatureToken(Byte[], Int32) |
Define um token para a assinatura que tem a matriz de caracteres especificada e o comprimento da assinatura. |
| GetSignatureToken(SignatureHelper) |
Define um token para a assinatura definida pelo especificado SignatureHelper. |
| GetSignerCertificate() |
Retorna um X509Certificate objeto correspondente ao certificado incluído na assinatura Authenticode do assembly ao qual este módulo pertence. Se o assembly não tiver sido assinado pelo Authenticode, |
| GetSignerCertificate() |
Retorna um |
| GetStringConstant(String) |
Retorna o token da cadeia de caracteres fornecida no pool de constantes do módulo. |
| GetSymWriter() |
Retorna o gravador de símbolo associado a este módulo dinâmico. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetType(String, Boolean, Boolean) |
Obtém o tipo nomeado definido no módulo, opcionalmente ignorando o caso do nome do tipo. Opcionalmente, gerará uma exceção se o tipo não for encontrado. |
| GetType(String, Boolean, Boolean) |
Retorna o tipo especificado, especificando se uma pesquisa diferencia maiúsculas de minúsculas do módulo e se deseja lançar uma exceção se o tipo não puder ser encontrado. (Herdado de Module) |
| GetType(String, Boolean) |
Obtém o tipo nomeado definido no módulo, opcionalmente ignorando o caso do nome do tipo. |
| GetType(String, Boolean) |
Retorna o tipo especificado, pesquisando o módulo com a confidencialidade de maiúsculas e minúsculas especificada. (Herdado de Module) |
| GetType(String) |
Obtém o tipo nomeado definido no módulo. |
| GetType(String) |
Retorna o tipo especificado, executando uma pesquisa que diferencia maiúsculas de minúsculas. (Herdado de Module) |
| GetTypes() |
Retorna todas as classes definidas neste módulo. |
| GetTypes() |
Retorna todos os tipos definidos neste módulo. (Herdado de Module) |
| GetTypeToken(String) |
Retorna o token usado para identificar o tipo com o nome especificado. |
| GetTypeToken(Type) |
Retorna o token usado para identificar o tipo especificado neste módulo. |
| IsDefined(Type, Boolean) |
Retorna um valor que indica se o tipo de atributo especificado foi aplicado a este módulo. |
| IsDefined(Type, Boolean) |
Retorna um valor que indica se o tipo de atributo especificado foi aplicado a este módulo. (Herdado de Module) |
| IsResource() |
Obtém um valor que indica se o objeto é um recurso. |
| IsResource() |
Obtém um valor que indica se o objeto é um recurso. (Herdado de Module) |
| IsTransient() |
Retorna um valor que indica se esse módulo dinâmico é transitório. |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| ResolveField(Int32, Type[], Type[]) |
Retorna o campo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. |
| ResolveField(Int32, Type[], Type[]) |
Retorna o campo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. (Herdado de Module) |
| ResolveField(Int32) |
Retorna o campo identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveMember(Int32, Type[], Type[]) |
Retorna o tipo ou membro identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. |
| ResolveMember(Int32, Type[], Type[]) |
Retorna o tipo ou membro identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. (Herdado de Module) |
| ResolveMember(Int32) |
Retorna o tipo ou membro identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveMethod(Int32, Type[], Type[]) |
Retorna o método ou construtor identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. |
| ResolveMethod(Int32, Type[], Type[]) |
Retorna o método ou construtor identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. (Herdado de Module) |
| ResolveMethod(Int32) |
Retorna o método ou construtor identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveSignature(Int32) |
Retorna o blob de assinatura identificado por um token de metadados. |
| ResolveSignature(Int32) |
Retorna o blob de assinatura identificado por um token de metadados. (Herdado de Module) |
| ResolveString(Int32) |
Retorna a cadeia de caracteres identificada pelo token de metadados especificado. |
| ResolveString(Int32) |
Retorna a cadeia de caracteres identificada pelo token de metadados especificado. (Herdado de Module) |
| ResolveType(Int32, Type[], Type[]) |
Retorna o tipo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. |
| ResolveType(Int32, Type[], Type[]) |
Retorna o tipo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros de tipo genérico especificados. (Herdado de Module) |
| ResolveType(Int32) |
Retorna o tipo identificado pelo token de metadados especificado. (Herdado de Module) |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Aplica um atributo personalizado a este módulo usando um BLOB (objeto binário grande) que representa o atributo. |
| SetCustomAttribute(CustomAttributeBuilder) |
Aplica um atributo personalizado a este módulo usando um construtor de atributos personalizado. |
| SetSymCustomAttribute(String, Byte[]) |
Este método não faz nada. |
| SetUserEntryPoint(MethodInfo) |
Define o ponto de entrada do usuário. |
| ToString() |
Retorna o nome do módulo. (Herdado de Module) |
Implantações explícitas de interface
Métodos de Extensão
| Nome | Description |
|---|---|
| GetCustomAttribute(Module, Type) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um módulo especificado. |
| GetCustomAttribute<T>(Module) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um módulo especificado. |
| GetCustomAttributes(Module, Type) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um módulo especificado. |
| GetCustomAttributes(Module) |
Recupera uma coleção de atributos personalizados que são aplicados a um módulo especificado. |
| GetCustomAttributes<T>(Module) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um módulo especificado. |
| IsDefined(Module, Type) |
Indica se atributos personalizados de um tipo especificado são aplicados a um módulo especificado. |