Refactoring Repository

 First Repo
IpersonRepository repository = new ServiceRepository();
var people =repository.GetPeople();
foreach(var person in people)
{
    personListBox.Items.Add(person);
}
------------------------------------------
Second Repo

IpersonRepository repository = new CSVRepository();
var people =repository.GetPeople();
foreach(var person in people)
{
    personListBox.Items.Add(person);
}

-------------------------------------
ThirdRepo

IpersonRepository repository = new SQLRepositroy();
var people =repository.GetPeople();
foreach(var person in people)
{
    personListBox.Items.Add(person);
}
-------------------------------------------------
Add new class Repository Factory class
----------------------------------------------
public static class RepositoryFactory
{
   public static IPersonRepository GetRepository(string repositoryType)
   {
       IPersonRepository repo =null;
       switch(repositoryType) 
       {
          case RepoType.Service:
             return new ServiceRepository();
            
           case RepoType.CSV:
            return new CSVRepository();
         
          case RepoType.SQL:
           return new SQLRepository();
          
         default:
            throw new ArgumentException("Invalid Repository Type");
          
       }
       return repo;
   }
}
---------------------


public enum RepoType
{
    Service,
    CSV,
    SQL
}
Take Method and Extract to method FetchData Method that takes string argument

private void FetchData(string repositoyType)
{
    IpersonRepositroy repositroy = RepositoryFactory.GetRepository(repositroyTpye);
    var people =repository.GetPeople();
    foreach(var person in people)
   {
     personListBox.Items.Add(person);
   }
}

----------------------------------
Now going back to the each method and replace the code 

FetchData( RepoType.Service);
FetchData( RepoType.CSV);
FetchData( RepoType.SQL);