// Calls the PropertySet call back. // If cancelled then return false, otherwise return true. // <param name="evt"> // <returns></returns> internal bool CallPropertySet(PropertyDelegateEventArgs evt) { if (PropertySet != null) { PropertySet(this, evt); if (evt.CancelEvent == true) { IsDirty = true; return(false); } } return(true); }
public object this [string key] { get { lock ( lockProps ) { PopulateProperties(); if (!knownProps.ContainsKey(key.ToUpper())) { return(null); } return(knownProps[ key.ToUpper() ].GetValue( this, null )); } } set { lock ( lockProps ) { PopulateProperties(); if (!knownProps.ContainsKey(key.ToUpper())) { return; } if (PropertySet != null) { PropertyDelegateEventArgs arg = new PropertyDelegateEventArgs { Property = key.ToUpper(), OldValue = this[key.ToUpper()], NewValue = value, CancelEvent = false }; PropertySet(this, arg); if (arg.CancelEvent == true) { IsDirty = true; return; } } if ( knownProps[key.ToUpper()].PropertyType.IsArray || knownProps[key.ToUpper()].PropertyType.IsGenericType ) { int nb = Math.Min( ( (dynamic)( knownProps[ key.ToUpper() ].GetValue(this, null) ) ).Length, ( (Array)value ).Length ); for (int i = 0; i < nb; i++) { SetArrayValue( key, i, ( (dynamic)value )[i] ); } /*for (int i = 0; i < nb; i++) * knownProps[key.ToUpper()].SetValue(this, value, new object[] { i });*/ } else { knownProps[ key.ToUpper() ].SetValue(this, value, null); } } } }