Что я сделал, так это добавил статическое свойство к самому типу, чтобы получить доступ к хранилищу этого типа. Метод использует IoC для ее решения:
public class Book
{
public static IBookRepository Repository { get { return IoC.Resolve<IBookRepository>(); } }
...
}
Тогда я могу звонить, как
Book myBook = Book.Repository.Find(id);
Мне это нравится, потому что он объединяет все элементы Book-y-ness и позволяет мне менять / вносить различные реализации в репозиторий для тестирования путем настройки IoC.