A field is defined as a type member using the TypeBuilder.DefineField method. The DefineField method requires the caller to specify the field name, the field type, and the attributes of the field (using the FieldAttributes enum). DefineField returns a FieldBuilder object.
FieldBuilder.SetOffset defines field layout. FieldBuilder.SetMarshal defines how a field is marshaled. FieldBuilder.SetConstant defines the default value of a field.
A field can also reference data in the .sdata section of the PE file. Fields representing initialized data are defined using FieldBuilder.DefineInitializedData. Fields representing uninitialized data are defined using FieldBuilder.DefineUninitializedData.