ModuleBuilder Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define e representa um módulo numa montagem dinâmica.
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 seguinte demonstra a utilização de ModuleBuilder para criar um módulo dinâmico. Note que o ModuleBuilder é criado ao chamar DefineDynamicModuleAssemblyBuilder, em vez de através 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
Observações
Para obter uma instância de ModuleBuilder, use o AssemblyBuilder.DefineDynamicModule método.
Propriedades
| Name | Description |
|---|---|
| Assembly |
Obtém o conjunto dinâmico que definiu esta 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 |
Recebe um |
| MDStreamVersion |
Recebe a versão do fluxo de metadados. |
| MDStreamVersion |
Recebe a versão do fluxo de metadados. (Herdado de Module) |
| MetadataToken |
Recebe um token que identifica o módulo dinâmico atual nos metadados. |
| MetadataToken |
Recebe um token que identifica o módulo nos metadados. (Herdado de Module) |
| ModuleHandle |
Fica com o controlo do módulo. (Herdado de Module) |
| ModuleVersionId |
Obtém um identificador universalmente único (UUID) que pode ser usado para distinguir entre duas versões de um módulo. |
| ModuleVersionId |
Obtém um identificador universalmente único (UUID) que pode ser usado para distinguir entre duas versões de um módulo. (Herdado de Module) |
| Name |
Uma cadeia que indica que este é um módulo em memória. |
| Name |
Recebe um |
| ScopeName |
Obtém uma cadeia que representa o nome do módulo dinâmico. |
| ScopeName |
Recebe uma cadeia que representa o nome do módulo. (Herdado de Module) |
Métodos
| Name | Description |
|---|---|
| CreateGlobalFunctions() |
Completa as definições globais de funções e definições globais de dados para este módulo dinâmico. |
| DefineDocument(String, Guid, Guid, Guid) |
Define um documento como fonte. |
| 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 especificado, atributos, convenção de chamada, tipo de retorno, modificadores personalizados para o tipo de retorno, tipos de parâmetros e modificadores personalizados para os tipos de parâmetro. |
| DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Define um método global com o nome especificado, atributos, convenção de chamada, tipo de retorno e tipos de parâmetro. |
| DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Define um método global com o nome especificado, atributos, tipo de retorno e tipos de parâmetros. |
| DefineInitializedData(String, Byte[], FieldAttributes) |
Define um campo de dados inicializado na secção .sdata do ficheiro executável portátil (PE). |
| DefineManifestResource(String, Stream, ResourceAttributes) |
Define um objeto binário grande (BLOB) que representa um recurso manifesto a ser embutido na montagem dinâmica. |
| 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 embutido gerido nomeado com os atributos dados que deve ser armazenado neste módulo. |
| DefineResource(String, String) |
Define o recurso embebido gerido 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 a |
| DefineUninitializedData(String, Int32, FieldAttributes) |
Define um campo de dados não inicializado na secção .sdata do ficheiro executável portátil (PE). |
| DefineUnmanagedResource(Byte[]) |
Define um recurso embutido não gerido dado um objeto binário grande opaco (BLOB) de bytes. |
| DefineUnmanagedResource(String) |
Define um recurso não gerido dado o nome de ficheiro de recurso Win32. |
| Equals(Object) |
Devolve um valor que indica se esta 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) |
Devolve um array de classes aceites pelo filtro e critérios de filtro dados. (Herdado de Module) |
| GetArrayMethod(Type, String, CallingConventions, Type, Type[]) |
Devolve o método nomeado numa classe de array. |
| GetArrayMethodToken(Type, String, CallingConventions, Type, Type[]) |
Devolve o token do método nomeado numa classe de array. |
| GetConstructorToken(ConstructorInfo, IEnumerable<Type>) |
Devolve o token usado para identificar o construtor que possui os atributos e tipos de parâmetros especificados dentro deste módulo. |
| GetConstructorToken(ConstructorInfo) |
Devolve o token usado para identificar o construtor especificado dentro deste módulo. |
| GetCustomAttributes(Boolean) |
Devolve todos os atributos personalizados que foram aplicados ao atual ModuleBuilder. |
| GetCustomAttributes(Boolean) |
Devolve todos os atributos personalizados. (Herdado de Module) |
| GetCustomAttributes(Type, Boolean) |
Devolve todos os atributos personalizados que foram aplicados ao atual ModuleBuilder, e que derivam de um tipo de atributo especificado. |
| GetCustomAttributes(Type, Boolean) |
Obtém atributos personalizados do tipo especificado. (Herdado de Module) |
| GetCustomAttributesData() |
Devolve informação sobre os atributos que foram aplicados à corrente ModuleBuilder, expressa como CustomAttributeData objetos. |
| GetCustomAttributesData() |
Devolve uma lista de CustomAttributeData objetos para o módulo atual, que pode ser usada no contexto apenas de reflexão. (Herdado de Module) |
| GetField(String, BindingFlags) |
Devolve um campo ao nível do módulo, definido na região .sdata do ficheiro executável portátil (PE), que tem o nome especificado e os atributos de ligação. |
| GetField(String, BindingFlags) |
Devolve um campo com o nome especificado e os atributos de ligação. (Herdado de Module) |
| GetField(String) |
Devolve um campo com o nome especificado. (Herdado de Module) |
| GetFields() |
Devolve os campos globais definidos no módulo. (Herdado de Module) |
| GetFields(BindingFlags) |
Retorna todos os campos definidos na região .sdata do ficheiro executável portátil (PE) que correspondem às flags de ligação especificados. |
| GetFields(BindingFlags) |
Devolve os campos globais definidos no módulo que correspondem às flags de ligação especificados. (Herdado de Module) |
| GetFieldToken(FieldInfo) |
Devolve o token usado para identificar o campo especificado dentro deste módulo. |
| GetHashCode() |
Devolve o código de hash para esta instância. |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Module) |
| GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Devolve um método com o nome especificado, informação de ligação, convenção de chamada, e tipos e modificadores de parâmetros. (Herdado de Module) |
| GetMethod(String, Type[]) |
Devolve um método com o nome e os tipos de parâmetros especificados. (Herdado de Module) |
| GetMethod(String) |
Devolve um método com o nome especificado. (Herdado de Module) |
| GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Devolve o método ao nível do módulo que corresponde aos critérios especificados. |
| GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Devolve a implementação do método de acordo com os critérios especificados. (Herdado de Module) |
| GetMethods() |
Devolve os métodos globais definidos no módulo. (Herdado de Module) |
| GetMethods(BindingFlags) |
Devolve todos os métodos que foram definidos ao nível do módulo para o atual ModuleBuilder, e que correspondem às flags de ligação especificados. |
| GetMethods(BindingFlags) |
Devolve os métodos globais definidos no módulo que correspondem às flags de ligação especificados. (Herdado de Module) |
| GetMethodToken(MethodInfo, IEnumerable<Type>) |
Devolve o token usado para identificar o método que possui os atributos e tipos de parâmetros especificados dentro deste módulo. |
| GetMethodToken(MethodInfo) |
Devolve o token usado para identificar o método especificado neste módulo. |
| GetObjectData(SerializationInfo, StreamingContext) |
Fornece uma ISerializable implementação para objetos serializados. (Herdado de Module) |
| GetPEKind(PortableExecutableKinds, ImageFileMachine) |
Recebe um par de valores que indicam a natureza do código num módulo e a plataforma alvo do módulo. |
| GetPEKind(PortableExecutableKinds, ImageFileMachine) |
Recebe um par de valores que indicam a natureza do código num módulo e a plataforma alvo do módulo. (Herdado de Module) |
| GetSignatureToken(Byte[], Int32) |
Define um token para a assinatura que tem o array de caracteres e o comprimento da assinatura especificados. |
| GetSignatureToken(SignatureHelper) |
Define um token para a assinatura que é definido pelo especificado SignatureHelper. |
| GetSignerCertificate() |
Devolve um X509Certificate objeto correspondente ao certificado incluído na assinatura Authenticode do assembly a que este módulo pertence. Se a montagem não tiver sido assinada por Authenticode, |
| GetSignerCertificate() |
Devolve um |
| GetStringConstant(String) |
Devolve o token da cadeia dada no conjunto constante do módulo. |
| GetSymWriter() |
Devolve o escritor de símbolos 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, ignorando opcionalmente o caso do nome do tipo. Opcionalmente, lança uma exceção se o tipo não for encontrado. |
| GetType(String, Boolean, Boolean) |
Devolve o tipo especificado, especificando se deve fazer uma pesquisa sensível a maiúsculas e minúsculas no módulo e se deve lançar uma exceção caso o tipo não seja encontrado. (Herdado de Module) |
| GetType(String, Boolean) |
Obtém o tipo nomeado definido no módulo, ignorando opcionalmente o caso do nome do tipo. |
| GetType(String, Boolean) |
Devolve o tipo especificado, pesquisando o módulo com a sensibilidade de maiúsculas especificada. (Herdado de Module) |
| GetType(String) |
Obtém o tipo nomeado definido no módulo. |
| GetType(String) |
Devolve o tipo especificado, realizando uma pesquisa sensível a maiúsculas e minúsculas. (Herdado de Module) |
| GetTypes() |
Devolve todas as classes definidas neste módulo. |
| GetTypes() |
Devolve todos os tipos definidos neste módulo. (Herdado de Module) |
| GetTypeToken(String) |
Devolve o token usado para identificar o tipo com o nome especificado. |
| GetTypeToken(Type) |
Devolve o token usado para identificar o tipo especificado dentro deste módulo. |
| IsDefined(Type, Boolean) |
Devolve um valor que indica se o tipo de atributo especificado foi aplicado a este módulo. |
| IsDefined(Type, Boolean) |
Devolve um valor que indica se o tipo de atributo especificado foi aplicado a este módulo. (Herdado de Module) |
| IsResource() |
Recebe um valor que indica se o objeto é um recurso. |
| IsResource() |
Recebe um valor que indica se o objeto é um recurso. (Herdado de Module) |
| IsTransient() |
Devolve um valor que indica se este módulo dinâmico é transitório. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ResolveField(Int32, Type[], Type[]) |
Devolve o campo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos de tipo especificados. |
| ResolveField(Int32, Type[], Type[]) |
Devolve o campo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos de tipo especificados. (Herdado de Module) |
| ResolveField(Int32) |
Devolve o campo identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveMember(Int32, Type[], Type[]) |
Devolve o tipo ou membro identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos do tipo especificados. |
| ResolveMember(Int32, Type[], Type[]) |
Devolve o tipo ou membro identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos do tipo especificados. (Herdado de Module) |
| ResolveMember(Int32) |
Devolve o tipo ou membro identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveMethod(Int32, Type[], Type[]) |
Devolve o método ou construtor identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos de tipo especificados. |
| ResolveMethod(Int32, Type[], Type[]) |
Devolve o método ou construtor identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos de tipo especificados. (Herdado de Module) |
| ResolveMethod(Int32) |
Devolve o método ou construtor identificado pelo token de metadados especificado. (Herdado de Module) |
| ResolveSignature(Int32) |
Devolve o blob de assinatura identificado por um token de metadados. |
| ResolveSignature(Int32) |
Devolve o blob de assinatura identificado por um token de metadados. (Herdado de Module) |
| ResolveString(Int32) |
Devolve a cadeia identificada pelo token de metadados especificado. |
| ResolveString(Int32) |
Devolve a cadeia identificada pelo token de metadados especificado. (Herdado de Module) |
| ResolveType(Int32, Type[], Type[]) |
Devolve o tipo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos do tipo especificados. |
| ResolveType(Int32, Type[], Type[]) |
Devolve o tipo identificado pelo token de metadados especificado, no contexto definido pelos parâmetros genéricos do tipo especificados. (Herdado de Module) |
| ResolveType(Int32) |
Devolve o tipo identificado pelo token de metadados especificado. (Herdado de Module) |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Aplica um atributo personalizado a este módulo usando um objeto binário grande (BLOB) especificado 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 utilizador. |
| ToString() |
Devolve o nome do módulo. (Herdado de Module) |
Implementações de Interface Explícita
Métodos da Extensão
| Name | 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 específico. |
| 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 específico. |
| IsDefined(Module, Type) |
Indica se atributos personalizados de um tipo especificado são aplicados a um módulo especificado. |