Definindo um campo com reflexão emitir.
Um campo é definido como um membro de tipo usando o TypeBuilder.DefineField método. O DefineField método requer que o chamador especificar o nome do campo, o tipo de campo e os atributos de campo (usando o FieldAttributes enumeração). DefineField retorna um FieldBuilder.
FieldBuilder.SetOffset define o layout do campo. FieldBuilder.SetMarshal define como um campo é empacotado. FieldBuilder.SetConstant define o valor padrão de um campo.
Um campo também pode fazer referência a dados na seção .sdata o arquivo de executável portável (PE). Campos que representam dados inicializados são definidos usando ModuleBuilder.DefineInitializedData. Campos que representam os dados não inicializados são definidos usando ModuleBuilder.DefineUninitializedData.
Atributos
Campos estáticos são especificados usando o FieldAttributes.Static atributo.
Os campos que podem ser inicializados, mas não subseqüentemente gravados são especificados usando o FieldAttributes.InitOnly atributo.
Os campos são constantes de tempo de compilação são especificados usando o FieldAttributes.Literal atributo.
Há vários atributos que determinam a visibilidade do campo. Consulte a descrição do FieldAttributes enumeração.