ModuleBuilder.DefineInitializedData(String, Byte[], FieldAttributes) Metoda

Definicja

Definiuje zainicjowane pole danych w sekcji sdata przenośnego pliku wykonywalnego (PE).

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

Parametry

name
String

Nazwa używana do odwoływania się do danych. name nie może zawierać osadzonych wartości null.

data
Byte[]

Binarny duży obiekt (BLOB) danych.

attributes
FieldAttributes

Atrybuty pola. Wartość domyślna to Static.

Zwraca

Pole do odwołowania się do danych.

Wyjątki

Długość name to zero.

-lub-

Rozmiar jest data mniejszy lub równy zerowi lub większemu lub równemu 0x3f0000.

name lub data to null.

CreateGlobalFunctions() został wcześniej wywołany.

Przykłady

W poniższym przykładzie użyto DefineInitializedData metody do zdefiniowania zainicjowanego pola danych w .sdata sekcji przenośnego pliku wykonywalnego (PE).

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();

Uwagi

Static jest automatycznie uwzględniany w elemecie attributes.

Dane zdefiniowane przez tę metodę nie są tworzone, dopóki CreateGlobalFunctions metoda nie zostanie wywołana.

Uwaga

Począwszy od .NET Framework dodatku Service Pack 2.0, ten element członkowski nie wymaga ReflectionPermission już flagiReflectionPermissionFlag.ReflectionEmit. (Zobacz Problemy z zabezpieczeniami w emitu odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy

Produkt Wersje
.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
.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