private static string OffsetOf(FieldDefinition field) { if (field.IsLiteral) { return("0"); } if (field.IsThreadStatic()) { return("THREAD_STATIC_FIELD_OFFSET"); } if (field.DeclaringType.HasGenericParameters) { return("0"); } if (field.IsNormalStatic()) { return($"{Naming.ForStaticFieldsStruct(field.DeclaringType)}::{Naming.ForFieldOffsetGetter(field)}()"); } return($"{Naming.ForTypeNameOnly(field.DeclaringType)}::{Naming.ForFieldOffsetGetter(field)}(){(!field.DeclaringType.IsValueType() ? "" : (" + static_cast<int32_t>(sizeof(" + Naming.ForType(TypeProvider.SystemObject) + "))"))}"); }