Definizione di un campo tramite reflection emit
Un campo viene definito come membro di un tipo mediante il metodo TypeBuilder.DefineField. Il metodo DefineField richiede che il chiamante specifichi il nome, il tipo e gli attributi del campo utilizzando l'enumerazione FieldAttributes. DefineField restituisce un FieldBuilder.
FieldBuilder.SetOffset definisce il layout di campo. FieldBuilder.SetMarshal definisce le modalità con cui viene effettuato il marshalling di un campo. FieldBuilder.SetConstant definisce il valore predefinito di un campo.
È inoltre possibile che un campo faccia riferimento a dati presenti nella sezione .sdata del file eseguibile portabile (PE, Portable Executable). I campi che rappresentano dati inizializzati vengono definiti mediante ModuleBuilder.DefineInitializedData. I campi che rappresentano dati non inizializzati vengono definiti mediante ModuleBuilder.DefineUninitializedData.
Attributi
I campi statici vengono specificati mediante l'attributo FieldAttributes.Static.
I campi che è possibile inizializzare ma in cui non è in seguito possibile scrivere vengono specificati mediante l'attributo FieldAttributes.InitOnly.
I campi che rappresentano costanti in fase di compilazione vengono specificati mediante l'attributo FieldAttributes.Literal.
La visibilità del campo è determinata da vari attributi. Vedere la descrizione dell'enumerazione FieldAttributes.