/// <summary> /// Returns a serializable property for the field. /// </summary> /// <returns>Serializable property that allows you to manipulate contents of the field.</returns> public SerializableProperty GetProperty() { SerializableProperty.Getter getter = () => { object parentObject = parent.GetReferencedObject(); if (parentObject != null) { return(Internal_GetValue(mCachedPtr, parentObject)); } else { return(null); } }; bool applyOnChange = Flags.HasFlag(SerializableFieldAttributes.ApplyOnDirty) || Flags.HasFlag(SerializableFieldAttributes.PassByCopy); SerializableProperty.Setter setter = (object value) => { object parentObject = parent.GetReferencedObject(); if (parentObject != null) { Internal_SetValue(mCachedPtr, parentObject, value); // If value type we cannot just modify the parent object because it's just a copy if ((applyOnChange || parentObject.GetType().IsValueType) && parent.parentProperty != null) { parent.parentProperty.SetValue(parentObject); } } }; SerializableProperty newProperty = Internal_CreateProperty(mCachedPtr); newProperty.Construct(type, internalType, getter, setter); return(newProperty); }
/// <summary> /// Returns a serializable property for the field. /// </summary> /// <returns>Serializable property that allows you to manipulate contents of the field.</returns> public SerializableProperty GetProperty() { SerializableProperty.Getter getter = () => { object parentObject = parent.GetReferencedObject(); if (parentObject != null) { return(Internal_GetValue(mCachedPtr, parentObject)); } else { return(null); } }; SerializableProperty.Setter setter = (object value) => { object parentObject = parent.GetReferencedObject(); if (parentObject != null) { Internal_SetValue(mCachedPtr, parentObject, value); // If value type we cannot just modify the parent object because it's just a copy if (parentObject.GetType().IsValueType&& parent.parentProperty != null) { parent.parentProperty.SetValue(parentObject); } } }; SerializableProperty newProperty = Internal_CreateProperty(mCachedPtr); newProperty.Construct(type, internalType, getter, setter); return(newProperty); }