Définition d'un champ avec l'émission de réflexion
Un champ est défini comme un membre de type à l'aide de la méthode TypeBuilder.DefineField. La méthode DefineField requiert que l'appelant spécifie le nom, le type et les attributs du champ (à l'aide de l'énumération FieldAttributes). DefineField retourne un FieldBuilder.
FieldBuilder.SetOffset définit la disposition du champ. FieldBuilder.SetMarshal définit la manière dont un champ est marshalé. FieldBuilder.SetConstant définit la valeur par défaut d'un champ.
Un champ peut aussi référencer des données dans la section .sdata d'un fichier exécutable portable (PE, Portable Executable). Les champs qui représentent des données initialisées sont définis à l'aide de ModuleBuilder.DefineInitializedData. Les champs qui représentent des données non initialisées sont définis à l'aide de ModuleBuilder.DefineUninitializedData.
Attributs
Les champs statiques sont spécifiés en utilisant l'attribut FieldAttributes.Static.
Les champs qui peuvent être initialisés mais qui ne sont pas écrits par la suite sont spécifiés en utilisant l'attribut FieldAttributes.InitOnly.
Les champs qui sont des constantes de compilation sont spécifiés en utilisant l'attribut FieldAttributes.Literal.
Plusieurs attributs déterminent le type de visibilité d'un champ. Consultez la description de l'énumération FieldAttributes.