public static void CopyFromDisk(this IDirectory directory, DirectoryInfo sourceDir) { if (directory == null) { throw new ArgumentNullException("directory"); } if (sourceDir == null) { return; } foreach (var fileInfo in sourceDir.GetFiles()) { directory.CreateFileFromDisk(fileInfo.Name, fileInfo); } foreach (var subDir in sourceDir.GetDirectories()) { var dir = directory.CreateDirectory(subDir.Name) as MemoryDirectory; dir.CopyFromDisk(subDir); } }