using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace Pithos.OFM { public interface IInfoRecord { FileSystemInfo Info { get; } } public class FileRecord:IInfoRecord { public FileSystemInfo Info { get { return FileInfo; } } public FileInfo FileInfo { get; set; } } public class DirectoryRecord : IInfoRecord { public FileSystemInfo Info { get { return DirInfo; }} public DirectoryInfo DirInfo { get; set; } public IEnumerable Files { get { return DirInfo.EnumerateFiles().Select(fi => new FileRecord { FileInfo = fi }); } } public IEnumerable Infos { get { return from info in DirInfo.EnumerateFileSystemInfos("*", SearchOption.AllDirectories) select (info is FileInfo)?(IInfoRecord)new FileRecord{FileInfo=(FileInfo)info}:new DirectoryRecord{DirInfo=(DirectoryInfo)info} ; } } public IEnumerable Directories { get { return from di in DirInfo.EnumerateDirectories("*", SearchOption.AllDirectories) select new DirectoryRecord { DirInfo = di }; } } } }