using System.Collections.Generic;
using System.Data.Entity;
public static void Main()
var files = new List<string> ();
files.Add(@"C:\some_01.wtv");
files.Add(@"C:\some_02.wtv");
files.Add(@"C:\some_03.wtv");
files.Add(@"C:\some_04.wtv");
files.Add(@"C:\some_05.wtv");
files.Add(@"C:\some_06.wtv");
var repo = new Repository();
var parser = new Parser();
var service = new RepositoryService(repo,parser);
var filesList = service.ScanFolder(@"C:\");
foreach(var item in filesList)
Console.WriteLine(item.Title);
public class RepositoryService
private IRepository _repository;
public RepositoryService(IRepository repo,IParse parser)
public IEnumerable<WtvRecording> ScanFolder(string folderPath)
var files = this._repository.GetAllFiles();
var recordings = this._parser.ParseFolder(files);
public interface IRepository
IEnumerable<string> GetAllFiles();
public class Repository: IRepository
private IEnumerable<string> _files;
var files = new List<string> ();
files.Add(@"C:\some_01.wtv");
files.Add(@"C:\some_02.wtv");
files.Add(@"C:\some_03.wtv");
files.Add(@"C:\some_04.wtv");
files.Add(@"C:\some_05.wtv");
files.Add(@"C:\some_06.wtv");
public IEnumerable<string> GetAllFiles()
public class WtvRecording
public string Title {get;set;}
public string Year {get;set;}
public string Description {get;set;}
public static class Extensions
public static string GetFileHeaderValue(this string filePath, int ordinal)
public class Parser: IParse
public int OrdinalDescription;
public IEnumerable<WtvRecording> ParseFolder(IEnumerable<string> files)
var recordingsWTV = files.Select(p => new WtvRecording()
{Title = p.GetFileHeaderValue(OrdinalTitle),
Year = p.GetFileHeaderValue(OrdinalYear)});
IEnumerable<WtvRecording> ParseFolder(IEnumerable<string> files);