Ejemplo n.º 1
0
 public FieldDefinition(
     DataFieldAttribute attr,
     object?defaultValue,
     AbstractFieldInfo fieldInfo,
     AbstractFieldInfo backingField,
     InheritanceBehavior inheritanceBehavior)
 {
     BackingField        = backingField;
     Attribute           = attr;
     DefaultValue        = defaultValue;
     FieldInfo           = fieldInfo;
     InheritanceBehavior = inheritanceBehavior;
 }
Ejemplo n.º 2
0
        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;
            }
        }