public virtual void DeleteDirectory(string path) { logger.Trace("Attempting to send '{0}' to recycling bin", path); var recyclingBin = _configProvider.RecycleBin; if (String.IsNullOrWhiteSpace(recyclingBin)) { logger.Info("Recycling Bin has not been configured, deleting permanently. {0}", path); _diskProvider.DeleteFolder(path, true); logger.Trace("Folder has been permanently deleted: {0}", path); } else { var destination = Path.Combine(recyclingBin, new DirectoryInfo(path).Name); logger.Trace("Moving '{0}' to '{1}'", path, destination); _diskProvider.MoveDirectory(path, destination); logger.Trace("Setting last accessed: {0}", path); _diskProvider.DirectorySetLastWriteTimeUtc(destination, DateTime.UtcNow); foreach (var file in _diskProvider.GetFiles(destination, SearchOption.AllDirectories)) { _diskProvider.FileSetLastWriteTimeUtc(file, DateTime.UtcNow); } logger.Trace("Folder has been moved to the recycling bin: {0}", destination); } }