I want to implement the repository pattern in an old legacy project.I already did some research, and found that, without an ORM, it's completely acceptable to have methods like GetBySpecialProperty, and skip the creation of a generic repository.My current setup is:public class FooRepository{    private IMapper<Foo> _fooMapper;    public FooRepository (IMapper<Foo> mapper)    {        _fooMapper = mapper;    }    public List<Foo> GetBySpecialProperty(int specialProperty)    {        var result = new List<Foo>();        //retrieve datareader        while (reader.Read()) result.Add(_fooMapper.Map(reader));        return result;    }}My problem now is: I'd really like to have an interface for this class and be able to inject it into business classes (For testing and to reduce coupling), but it feels wrong to have an IFooRepository interface just for that method.Plus, I really don't know how I would make a factory for my repositories, as the caller would have to know the special methods inside the repository he wants.PS: to access data I'm currently using OleDb, and switching to an ORM is not an option, as the rest of the team doesn't know how to use them.Other SE questions I already browsed:https://stackoverflow.com/questions/5017969/repository-pattern-without-an-ormhttps://stackoverflow.com/questions/14293053/data-access-layer-without-orm
Repository pattern and Dependency Injection without an ORM
domain driven design;dependency injection;legacy