public FieldDefinition( DataFieldAttribute attr, object?defaultValue, AbstractFieldInfo fieldInfo, AbstractFieldInfo backingField, InheritanceBehavior inheritanceBehavior) { BackingField = backingField; Attribute = attr; DefaultValue = defaultValue; FieldInfo = fieldInfo; InheritanceBehavior = inheritanceBehavior; }
private void EmitSetField(RobustILGenerator rGenerator, AbstractFieldInfo info) { switch (info) { case SpecificFieldInfo field: rGenerator.Emit(OpCodes.Stfld, field.FieldInfo); break; case SpecificPropertyInfo property: var setter = property.PropertyInfo.GetSetMethod(true) ?? throw new NullReferenceException(); var opCode = info.DeclaringType?.IsValueType ?? false ? OpCodes.Call : OpCodes.Callvirt; rGenerator.Emit(opCode, setter); break; } }