/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="changeType"></param> /// <param name="propertyName"></param> protected void Notify(object sender, CacheItemChangeType changeType, string propertyName) { //AbstractEntity子类在内存中时才开启事件通知 if (IsInCache || !(this is AbstractEntity)) { Notify(sender, new CacheItemEventArgs(changeType, propertyName)); } }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="data"></param> /// <param name="updateValueFactory"></param> /// <returns></returns> public override T AddOrUpdate <T>(string key, T data, Func <string, T, T> updateValueFactory) { CacheItemChangeType changeType = CacheItemChangeType.Add; Func <string, object, object> func = (updateKey, updateValue) => { changeType = CacheItemChangeType.Modify; return(updateValueFactory(updateKey, (T)updateValue)); }; T temp = (T)_cacheStruct.AddOrUpdate(key, data, func); AddChildrenListener(temp); Notify(temp, changeType, PropertyName); return(temp); }
/// <summary> /// /// </summary> /// <param name="changeType"></param> /// <param name="propertyName"></param> public CacheItemEventArgs(CacheItemChangeType changeType, string propertyName) { ChangeType = changeType; PropertyName = propertyName; }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="changeType"></param> /// <param name="propertyName"></param> protected void Notify(object sender, CacheItemChangeType changeType, string propertyName) { Notify(sender, new CacheItemEventArgs(changeType, propertyName)); }
/// <summary> /// 当前对象(包括继承)的属性触发通知事件,通知到此层为根 /// </summary> /// <param name="changeType"></param> /// <param name="propertyName"></param> protected override void Notify(CacheItemChangeType changeType, string propertyName) { _hasChanged = true; }
/// <summary> /// 当前对象(包括继承)的属性触发通知事件 /// </summary> protected virtual void Notify(CacheItemChangeType changeType, string propertyName) { if (!_isDisableEvent) { _hasChanged = true; if (ItemEvent != null) { ItemEvent.Notify(this, new CacheItemEventArgs(changeType, propertyName)); } } }