Definir un campo con Reflection Emit
Actualización: noviembre 2007
Un campo se define como un miembro de tipo mediante el método TypeBuilder.DefineField. El método DefineField requiere que el llamador especifique el nombre del campo, el tipo del campo y los atributos del campo (mediante la enumeración FieldAttributes). DefineField devuelve un objeto FieldBuilder.
FieldBuilder.SetOffset define el diseño del campo. FieldBuilder.SetMarshal define cómo se calculan las referencias de un campo. FieldBuilder.SetConstant define el valor predeterminado de un campo.
Un campo también puede hacer referencia a los datos de la sección .sdata del archivo ejecutable portable (PE). Los campos que representan datos inicializados se definen mediante ModuleBuilder.DefineInitializedData. Los campos que representan datos sin inicializar se definen mediante ModuleBuilder.DefineUninitializedData.
Atributos
Los campos estáticos se especifican mediante el atributo FieldAttributes.Static.
Los campos que se pueden inicializar, pero después no se puede escribir en ellos, se especifican mediante el atributo FieldAttributes.InitOnly.
Los campos que son constantes en tiempo de compilación se especifican mediante el atributo FieldAttributes.Literal.
Varios atributos determinan la visibilidad del campo. Vea la descripción de la enumeración FieldAttributes.