Ler em inglês

Compartilhar via


ModuleBuilder.DefineInitializedData(String, Byte[], FieldAttributes) Método

Definição

Define o campo de dados inicializado na seção .sdata do arquivo PE (executável portátil).

public System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes);

Parâmetros

name
String

O nome usado para fazer referência aos dados. name não pode conter nulos inseridos.

data
Byte[]

O BLOB (objeto binário grande) de dados.

attributes
FieldAttributes

Os atributos do campo. O padrão é Static.

Retornos

Um campo para fazer referência aos dados.

Exceções

O comprimento de name é zero.

- ou -

O tamanho de data é menor ou igual a zero, ou maior ou igual a 0x3f0000.

name ou data é null.

Exemplos

O exemplo a seguir usa o DefineInitializedData método para definir um campo de dados inicializado na .sdata seção do arquivo PE (executável portátil).

AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;
myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder =
   currentDomain.DefineDynamicAssembly
               (myAssemblyName, AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define the initialized data field in the .sdata section of the PE file.
FieldBuilder myFieldBuilder =
    myModuleBuilder.DefineInitializedData("MyField",new byte[]{01,00,01},
               FieldAttributes.Static|FieldAttributes.Public);
 myModuleBuilder.CreateGlobalFunctions();

Comentários

Static é incluído automaticamente no attributes.

Os dados definidos por esse método não são criados até que o CreateGlobalFunctions método seja chamado.

Observação

A partir do .NET Framework 2.0 Service Pack 1, esse membro não requer ReflectionPermission mais com o ReflectionPermissionFlag.ReflectionEmit sinalizador . (Consulte Problemas de segurança na emissão de reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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 (package-provided), 2.1