/// <summary> /// 检测并执行<see cref="IRecyclable"/>接口的逻辑 /// </summary> /// <typeparam name="TEntity">实体基类</typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="entity">要检测的实体信息</param> /// <param name="operation">回收站操作类型</param> /// <returns></returns> public static TEntity CheckIRecycle <TEntity, TKey>(this TEntity entity, RecycleOperation operation) where TEntity : IEntity <TKey> where TKey : IEquatable <TKey> { if (!(entity is IRecyclable)) { return(entity); } IRecyclable entity1 = entity as IRecyclable; switch (operation) { case RecycleOperation.LogicDelete: entity1.IsDeleted = true; break; case RecycleOperation.Restore: entity1.IsDeleted = false; break; case RecycleOperation.PhysicalDelete: if (!entity1.IsDeleted) { throw new InvalidOperationException("数据不处于回收(IsDeleted==true)状态,不能永久删除。"); } break; } return((TEntity)entity1); }
/// <summary> /// 检测并执行<see cref="IRecyclable"/>接口的逻辑 /// </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 IRecyclable)) { return(entity); } IRecyclable entity1 = entity as IRecyclable; switch (operation) { case RecycleOperation.LogicDelete: entity1.IsDeleted = true; break; case RecycleOperation.Restore: entity1.IsDeleted = false; break; case RecycleOperation.PhysicalDelete: break; } return((TEntity)entity1); }