/// <summary> /// 设置变更的属性 /// </summary> /// <param name="propertyName"></param> public void SetChangeProperty(string propertyName) { IItemChangeEvent val = null; try { val = GetAccessor()[propertyName] as IItemChangeEvent; } catch (Exception ex) { try { val = this[propertyName] as IItemChangeEvent; } catch { throw new Exception("Get property:" + GetType().Name + "." + propertyName, ex); } } if (val != null) { val.PropertyName = propertyName; if (IsReadOnly) { val.DisableChildNotify(); } AddChildrenListener(val); } Notify(this, CacheItemChangeType.Modify, propertyName); }
protected override void Notify(object sender, CacheItemEventArgs eventArgs) { //check data is init. IItemChangeEvent val = sender as IItemChangeEvent; if (val != null && !val.HasChanged) { return; } base.Notify(sender, eventArgs); }
/// <summary> /// 当前对象(包括继承)的属性触发通知事件 /// </summary> /// <param name="sender">触发事件源</param> /// <param name="eventArgs"></param> protected override void Notify(object sender, CacheItemEventArgs eventArgs) { IItemChangeEvent val = sender as IItemChangeEvent; if (val != null && !val.HasChanged) { return; } _hasChanged = true; PutToChangeKeys(sender as AbstractEntity); DoChangedNotify(sender as AbstractEntity, eventArgs); }
/// <summary> /// 绑定事件且通知 /// </summary> /// <param name="obj"></param> /// <param name="propertyName"></param> protected void BindAndChangeProperty(object obj, string propertyName) { IItemChangeEvent val = obj as IItemChangeEvent; if (val != null) { val.PropertyName = propertyName; if (IsReadOnly) { val.DisableChildNotify(); } AddChildrenListener(val); } Notify(this, CacheItemChangeType.Modify, propertyName); }