Определение поля при помощи порождаемого отражения
Поле определяется как член типа с использованием метода TypeBuilder.DefineField. Метод DefineField требует, чтобы вызывающий оператор указывал имя поля, тип поля и атрибуты поля (с использованием перечисления FieldAttributes). Метод DefineField возвращает объект FieldBuilder.
FieldBuilder.SetOffset определяет макет поля. FieldBuilder.SetMarshal определяет маршалинг поля. FieldBuilder.SetConstant определяет значение по умолчанию для поля.
Поле также может ссылаться на поля, определенные в разделе .sdata переносимого исполняемого файла (PE). Поля, представляющие инициализированные данные, определяются с использованием метода ModuleBuilder.DefineInitializedData. Поля, представляющие неинициализированные данные, определяются с использованием метода ModuleBuilder.DefineUninitializedData.
Атрибуты
Статические поля задаются с использованием атрибута FieldAttributes.Static.
Поля, которые могут быть инициализированы, но в последствии не записаны, определяются с использованием атрибута FieldAttributes.InitOnly.
Поля, являющиеся константами во время компиляции, определяются с использованием атрибута FieldAttributes.Literal.
Имеется несколько атрибутов, определяющих видимость поля. См. описание перечисления FieldAttributes.