コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: CacheItemSet.cs プロジェクト: WaylandGod/Scut
        /// <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);
        }
コード例 #4
0
        /// <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);
        }