Example #1
0
 public void deleteObj(IRecycle obj)
 {
     if (m_poolList.IndexOf(obj) == -1)
     {
         m_poolList.Add(obj);
     }
 }
        /// <summary>
        /// 检测并执行<see cref="IRecycle"/>接口的逻辑
        /// </summary>
        /// <param name="entity">要检测的实体信息</param>
        /// <param name="operation">回收站操作类型</param>
        public static TEntity CheckIRecycle <TEntity, TKey>(this TEntity entity, RecycleOperation operation)
            where TEntity : IEntity <TKey>
        {
            if (!(entity is IRecycle))
            {
                return(entity);
            }
            IRecycle entity1 = entity as IRecycle;

            switch (operation)
            {
            case RecycleOperation.LogicDelete:
                if (entity1.IsDeleted)
                {
                    throw new InvalidOperationException("数据已是回收状态,不能逻辑删除");
                }
                entity1.IsDeleted = true;
                break;

            case RecycleOperation.Restore:
                if (!entity1.IsDeleted)
                {
                    throw new InvalidOperationException("数据不处于回收状态,不能还原");
                }
                entity1.IsDeleted = false;
                break;

            case RecycleOperation.PhysicalDelete:
                if (!entity1.IsDeleted)
                {
                    throw new InvalidOperationException("数据不处于回收状态,不能永久删除");
                }
                break;
            }
            return((TEntity)entity1);
        }